1693220037441-add-shared-vault-information.ts 5.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { MigrationInterface, QueryRunner } from 'typeorm'
  2. export class AddSharedVaultInformation1693220037441 implements MigrationInterface {
  3. name = 'AddSharedVaultInformation1693220037441'
  4. public async up(queryRunner: QueryRunner): Promise<void> {
  5. await queryRunner.query('DROP INDEX "index_items_on_user_uuid_and_content_type"')
  6. await queryRunner.query('DROP INDEX "user_uuid_and_updated_at_timestamp_and_created_at_timestamp"')
  7. await queryRunner.query('DROP INDEX "user_uuid_and_deleted"')
  8. await queryRunner.query('DROP INDEX "updated_at_timestamp"')
  9. await queryRunner.query('DROP INDEX "index_items_on_deleted"')
  10. await queryRunner.query('DROP INDEX "index_items_on_user_uuid"')
  11. await queryRunner.query('DROP INDEX "index_items_on_content_type"')
  12. await queryRunner.query(
  13. 'CREATE TABLE "temporary_items" ("uuid" varchar PRIMARY KEY NOT NULL, "duplicate_of" varchar(36), "items_key_id" varchar(255), "content" text, "content_type" varchar(255), "content_size" integer, "enc_item_key" text, "auth_hash" varchar(255), "user_uuid" varchar(36) NOT NULL, "deleted" tinyint(1) DEFAULT (0), "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "created_at_timestamp" bigint NOT NULL, "updated_at_timestamp" bigint NOT NULL, "updated_with_session" varchar(36), "last_edited_by" varchar(36), "shared_vault_uuid" varchar(36), "key_system_identifier" varchar(36))',
  14. )
  15. await queryRunner.query(
  16. 'INSERT INTO "temporary_items"("uuid", "duplicate_of", "items_key_id", "content", "content_type", "content_size", "enc_item_key", "auth_hash", "user_uuid", "deleted", "created_at", "updated_at", "created_at_timestamp", "updated_at_timestamp", "updated_with_session") SELECT "uuid", "duplicate_of", "items_key_id", "content", "content_type", "content_size", "enc_item_key", "auth_hash", "user_uuid", "deleted", "created_at", "updated_at", "created_at_timestamp", "updated_at_timestamp", "updated_with_session" FROM "items"',
  17. )
  18. await queryRunner.query('DROP TABLE "items"')
  19. await queryRunner.query('ALTER TABLE "temporary_items" RENAME TO "items"')
  20. await queryRunner.query(
  21. 'CREATE INDEX "index_items_on_user_uuid_and_content_type" ON "items" ("user_uuid", "content_type") ',
  22. )
  23. await queryRunner.query(
  24. 'CREATE INDEX "user_uuid_and_updated_at_timestamp_and_created_at_timestamp" ON "items" ("user_uuid", "updated_at_timestamp", "created_at_timestamp") ',
  25. )
  26. await queryRunner.query('CREATE INDEX "user_uuid_and_deleted" ON "items" ("user_uuid", "deleted") ')
  27. await queryRunner.query('CREATE INDEX "updated_at_timestamp" ON "items" ("updated_at_timestamp") ')
  28. await queryRunner.query('CREATE INDEX "index_items_on_deleted" ON "items" ("deleted") ')
  29. await queryRunner.query('CREATE INDEX "index_items_on_user_uuid" ON "items" ("user_uuid") ')
  30. await queryRunner.query('CREATE INDEX "index_items_on_content_type" ON "items" ("content_type") ')
  31. }
  32. public async down(queryRunner: QueryRunner): Promise<void> {
  33. await queryRunner.query('DROP INDEX "index_items_on_shared_vault_uuid"')
  34. await queryRunner.query('DROP INDEX "user_uuid_and_deleted"')
  35. await queryRunner.query('DROP INDEX "user_uuid_on_shared_vaults"')
  36. await queryRunner.query('DROP INDEX "index_items_on_content_type"')
  37. await queryRunner.query('DROP INDEX "index_items_on_user_uuid"')
  38. await queryRunner.query('DROP INDEX "index_items_on_deleted"')
  39. await queryRunner.query('DROP INDEX "updated_at_timestamp"')
  40. await queryRunner.query('DROP INDEX "user_uuid_and_updated_at_timestamp_and_created_at_timestamp"')
  41. await queryRunner.query('DROP INDEX "index_items_on_user_uuid_and_content_type"')
  42. await queryRunner.query('ALTER TABLE "items" RENAME TO "temporary_items"')
  43. await queryRunner.query(
  44. 'CREATE TABLE "items" ("uuid" varchar PRIMARY KEY NOT NULL, "duplicate_of" varchar(36), "items_key_id" varchar(255), "content" text, "content_type" varchar(255), "content_size" integer, "enc_item_key" text, "auth_hash" varchar(255), "user_uuid" varchar(36) NOT NULL, "deleted" tinyint(1) DEFAULT (0), "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "created_at_timestamp" bigint NOT NULL, "updated_at_timestamp" bigint NOT NULL, "updated_with_session" varchar(36), "last_edited_by" varchar(36), "shared_vault_uuid" varchar(36), "key_system_identifier" varchar(36))',
  45. )
  46. await queryRunner.query(
  47. 'INSERT INTO "items"("uuid", "duplicate_of", "items_key_id", "content", "content_type", "content_size", "enc_item_key", "auth_hash", "user_uuid", "deleted", "created_at", "updated_at", "created_at_timestamp", "updated_at_timestamp", "updated_with_session", "last_edited_by", "shared_vault_uuid", "key_system_identifier") SELECT "uuid", "duplicate_of", "items_key_id", "content", "content_type", "content_size", "enc_item_key", "auth_hash", "user_uuid", "deleted", "created_at", "updated_at", "created_at_timestamp", "updated_at_timestamp", "updated_with_session", "last_edited_by", "shared_vault_uuid", "key_system_identifier" FROM "temporary_items"',
  48. )
  49. await queryRunner.query('DROP TABLE "temporary_items"')
  50. await queryRunner.query('CREATE INDEX "index_items_on_content_type" ON "items" ("content_type") ')
  51. await queryRunner.query('CREATE INDEX "index_items_on_user_uuid" ON "items" ("user_uuid") ')
  52. await queryRunner.query('CREATE INDEX "index_items_on_deleted" ON "items" ("deleted") ')
  53. await queryRunner.query('CREATE INDEX "updated_at_timestamp" ON "items" ("updated_at_timestamp") ')
  54. await queryRunner.query(
  55. 'CREATE INDEX "user_uuid_and_updated_at_timestamp_and_created_at_timestamp" ON "items" ("user_uuid", "updated_at_timestamp", "created_at_timestamp") ',
  56. )
  57. await queryRunner.query(
  58. 'CREATE INDEX "index_items_on_user_uuid_and_content_type" ON "items" ("user_uuid", "content_type") ',
  59. )
  60. await queryRunner.query('CREATE INDEX "user_uuid_and_deleted" ON "items" ("user_uuid", "deleted") ')
  61. }
  62. }