user.model.js 1.2 KB

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