domain.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import * as Knex from "knex";
  2. export async function createDomainTable(knex: Knex) {
  3. const hasTable = await knex.schema.hasTable("domains");
  4. if (!hasTable) {
  5. await knex.schema.raw('create extension if not exists "uuid-ossp"');
  6. await knex.schema.createTable("domains", table => {
  7. table.increments("id").primary();
  8. table
  9. .boolean("banned")
  10. .notNullable()
  11. .defaultTo(false);
  12. table
  13. .integer("banned_by_id")
  14. .references("id")
  15. .inTable("users");
  16. table
  17. .string("address")
  18. .unique()
  19. .notNullable();
  20. table.string("homepage").nullable();
  21. table
  22. .integer("user_id")
  23. .references("id")
  24. .inTable("users")
  25. .unique();
  26. table.timestamps(false, true);
  27. });
  28. }
  29. const hasUUID = await knex.schema.hasColumn("domains", "uuid");
  30. if (!hasUUID) {
  31. await knex.schema.raw('create extension if not exists "uuid-ossp"');
  32. await knex.schema.alterTable("domains", table => {
  33. table
  34. .uuid("uuid")
  35. .notNullable()
  36. .defaultTo(knex.raw("uuid_generate_v4()"));
  37. });
  38. }
  39. }