user.model.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const { ROLES } = require("../consts");
  2. async function createUserTable(knex) {
  3. const hasTable = await knex.schema.hasTable("users");
  4. if (!hasTable) {
  5. await knex.schema.createTable("users", table => {
  6. table.increments("id").primary();
  7. table.string("apikey");
  8. table
  9. .boolean("banned")
  10. .notNullable()
  11. .defaultTo(false);
  12. table
  13. .integer("banned_by_id")
  14. .unsigned()
  15. .references("id")
  16. .inTable("users");
  17. table
  18. .string("email")
  19. .unique()
  20. .notNullable();
  21. table
  22. .enu("role", [ROLES.USER, ROLES.ADMIN])
  23. .notNullable()
  24. .defaultTo(ROLES.USER);
  25. table.string("password").notNullable();
  26. table.datetime("cooldown").nullable();
  27. table.integer("malicious_attempts").notNullable().defaultTo(0);
  28. table.dateTime("reset_password_expires");
  29. table.string("reset_password_token");
  30. table.dateTime("change_email_expires");
  31. table.string("change_email_token");
  32. table.string("change_email_address");
  33. table.dateTime("verification_expires");
  34. table.string("verification_token");
  35. table
  36. .boolean("verified")
  37. .notNullable()
  38. .defaultTo(false);
  39. table.timestamps(false, true);
  40. });
  41. }
  42. }
  43. module.exports = {
  44. createUserTable
  45. };