Ver Fonte

fix(revisions): conflict with table naming

Karol Sójko há 1 ano atrás
pai
commit
ed671be9c5

+ 9 - 13
packages/revisions/migrations/mysql/1669113322388-init.ts

@@ -7,16 +7,16 @@ export class init1669113322388 implements MigrationInterface {
     await this.syncSchemaBetweenLegacyRevisions(queryRunner)
 
     await queryRunner.query(
-      'CREATE TABLE IF NOT EXISTS `revisions` (`uuid` varchar(36) NOT NULL, `item_uuid` varchar(36) NOT NULL, `user_uuid` varchar(36) NOT NULL, `content` mediumtext NULL, `content_type` varchar(255) NULL, `items_key_id` varchar(255) NULL, `enc_item_key` text NULL, `auth_hash` varchar(255) NULL, `creation_date` date NULL, `created_at` datetime(6) NULL, `updated_at` datetime(6) NULL, INDEX `item_uuid` (`item_uuid`), INDEX `user_uuid` (`user_uuid`), INDEX `creation_date` (`creation_date`), INDEX `created_at` (`created_at`), PRIMARY KEY (`uuid`)) ENGINE=InnoDB',
+      'CREATE TABLE `revisions_revisions` (`uuid` varchar(36) NOT NULL, `item_uuid` varchar(36) NOT NULL, `user_uuid` varchar(36) NULL, `content` mediumtext NULL, `content_type` varchar(255) NULL, `items_key_id` varchar(255) NULL, `enc_item_key` text NULL, `auth_hash` varchar(255) NULL, `creation_date` date NULL, `created_at` datetime(6) NULL, `updated_at` datetime(6) NULL, INDEX `item_uuid` (`item_uuid`), INDEX `user_uuid` (`user_uuid`), INDEX `creation_date` (`creation_date`), INDEX `created_at` (`created_at`), PRIMARY KEY (`uuid`)) ENGINE=InnoDB',
     )
   }
 
   public async down(queryRunner: QueryRunner): Promise<void> {
-    await queryRunner.query('DROP INDEX `created_at` ON `revisions`')
-    await queryRunner.query('DROP INDEX `creation_date` ON `revisions`')
-    await queryRunner.query('DROP INDEX `user_uuid` ON `revisions`')
-    await queryRunner.query('DROP INDEX `item_uuid` ON `revisions`')
-    await queryRunner.query('DROP TABLE `revisions`')
+    await queryRunner.query('DROP INDEX `created_at` ON `revisions_revisions`')
+    await queryRunner.query('DROP INDEX `creation_date` ON `revisions_revisions`')
+    await queryRunner.query('DROP INDEX `user_uuid` ON `revisions_revisions`')
+    await queryRunner.query('DROP INDEX `item_uuid` ON `revisions_revisions`')
+    await queryRunner.query('DROP TABLE `revisions_revisions`')
   }
 
   private async syncSchemaBetweenLegacyRevisions(queryRunner: QueryRunner): Promise<void> {
@@ -28,14 +28,10 @@ export class init1669113322388 implements MigrationInterface {
       return
     }
 
-    const revisionsTableHasUserUuidColumnQueryResult = await queryRunner.manager.query(
-      'SELECT COUNT(*) as count FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = "revisions" AND column_name = "user_uuid"',
+    await queryRunner.query(
+      'INSERT INTO `revisions_revisions`(`uuid`, `item_uuid`, `user_uuid`, `content`, `content_type`, `items_key_id`, `enc_item_key`, `auth_hash`, `creation_date`, `created_at`, `updated_at`) SELECT `uuid`, `item_uuid`, NULL, `content`, `content_type`, `items_key_id`, `enc_item_key`, `auth_hash`, `creation_date`, `created_at`, `updated_at` FROM `revisions`',
     )
-    const revisionsTableHasUserUuidColumn = revisionsTableHasUserUuidColumnQueryResult[0].count === 1
-    if (revisionsTableHasUserUuidColumn) {
-      return
-    }
 
-    await queryRunner.query('ALTER TABLE `revisions` ADD COLUMN `user_uuid` varchar(36) NULL')
+    await queryRunner.query('DROP TABLE `revisions`')
   }
 }

+ 6 - 6
packages/revisions/migrations/mysql/1669636497932-remove-date-indexes.ts

@@ -5,24 +5,24 @@ export class removeDateIndexes1669636497932 implements MigrationInterface {
 
   public async up(queryRunner: QueryRunner): Promise<void> {
     const indexRevisionsOnCreatedAt = await queryRunner.manager.query(
-      'SHOW INDEX FROM `revisions` where `key_name` = "created_at"',
+      'SHOW INDEX FROM `revisions_revisions` where `key_name` = "created_at"',
     )
     const indexRevisionsOnCreatedAtExist = indexRevisionsOnCreatedAt && indexRevisionsOnCreatedAt.length > 0
     if (indexRevisionsOnCreatedAtExist) {
-      await queryRunner.query('DROP INDEX `created_at` ON `revisions`')
+      await queryRunner.query('DROP INDEX `created_at` ON `revisions_revisions`')
     }
 
     const indexRevisionsOnCreationDate = await queryRunner.manager.query(
-      'SHOW INDEX FROM `revisions` where `key_name` = "creation_date"',
+      'SHOW INDEX FROM `revisions_revisions` where `key_name` = "creation_date"',
     )
     const indexRevisionsOnCreationDateAtExist = indexRevisionsOnCreationDate && indexRevisionsOnCreationDate.length > 0
     if (indexRevisionsOnCreationDateAtExist) {
-      await queryRunner.query('DROP INDEX `creation_date` ON `revisions`')
+      await queryRunner.query('DROP INDEX `creation_date` ON `revisions_revisions`')
     }
   }
 
   public async down(queryRunner: QueryRunner): Promise<void> {
-    await queryRunner.query('CREATE INDEX `creation_date` ON `revisions` (`creation_date`)')
-    await queryRunner.query('CREATE INDEX `created_at` ON `revisions` (`created_at`)')
+    await queryRunner.query('CREATE INDEX `creation_date` ON `revisions_revisions` (`creation_date`)')
+    await queryRunner.query('CREATE INDEX `created_at` ON `revisions_revisions` (`created_at`)')
   }
 }

+ 2 - 2
packages/revisions/migrations/mysql/1669735585016-make-user-uuid-nullable.ts

@@ -4,10 +4,10 @@ export class makeUserUuidNullable1669735585016 implements MigrationInterface {
   name = 'makeUserUuidNullable1669735585016'
 
   public async up(queryRunner: QueryRunner): Promise<void> {
-    await queryRunner.query('ALTER TABLE `revisions` CHANGE `user_uuid` `user_uuid` varchar(36) NULL')
+    await queryRunner.query('ALTER TABLE `revisions_revisions` CHANGE `user_uuid` `user_uuid` varchar(36) NULL')
   }
 
   public async down(queryRunner: QueryRunner): Promise<void> {
-    await queryRunner.query('ALTER TABLE `revisions` CHANGE `user_uuid` `user_uuid` varchar(36) NOT NULL')
+    await queryRunner.query('ALTER TABLE `revisions_revisions` CHANGE `user_uuid` `user_uuid` varchar(36) NOT NULL')
   }
 }

+ 10 - 8
packages/revisions/migrations/mysql/1693915383950-add-shared-vault-information.ts

@@ -2,16 +2,18 @@ import { MigrationInterface, QueryRunner } from 'typeorm'
 
 export class AddSharedVaultInformation1693915383950 implements MigrationInterface {
   public async up(queryRunner: QueryRunner): Promise<void> {
-    await queryRunner.query('ALTER TABLE `revisions` ADD `edited_by` varchar(36) NULL')
-    await queryRunner.query('ALTER TABLE `revisions` ADD `shared_vault_uuid` varchar(36) NULL')
-    await queryRunner.query('ALTER TABLE `revisions` ADD `key_system_identifier` varchar(36) NULL')
-    await queryRunner.query('CREATE INDEX `index_revisions_on_shared_vault_uuid` ON `revisions` (`shared_vault_uuid`)')
+    await queryRunner.query('ALTER TABLE `revisions_revisions` ADD `edited_by` varchar(36) NULL')
+    await queryRunner.query('ALTER TABLE `revisions_revisions` ADD `shared_vault_uuid` varchar(36) NULL')
+    await queryRunner.query('ALTER TABLE `revisions_revisions` ADD `key_system_identifier` varchar(36) NULL')
+    await queryRunner.query(
+      'CREATE INDEX `index_revisions_on_shared_vault_uuid` ON `revisions_revisions` (`shared_vault_uuid`)',
+    )
   }
 
   public async down(queryRunner: QueryRunner): Promise<void> {
-    await queryRunner.query('DROP INDEX `index_revisions_on_shared_vault_uuid` ON `revisions`')
-    await queryRunner.query('ALTER TABLE `revisions` DROP COLUMN `key_system_identifier`')
-    await queryRunner.query('ALTER TABLE `revisions` DROP COLUMN `shared_vault_uuid`')
-    await queryRunner.query('ALTER TABLE `revisions` DROP COLUMN `last_edited_by`')
+    await queryRunner.query('DROP INDEX `index_revisions_on_shared_vault_uuid` ON `revisions_revisions`')
+    await queryRunner.query('ALTER TABLE `revisions_revisions` DROP COLUMN `key_system_identifier`')
+    await queryRunner.query('ALTER TABLE `revisions_revisions` DROP COLUMN `shared_vault_uuid`')
+    await queryRunner.query('ALTER TABLE `revisions_revisions` DROP COLUMN `last_edited_by`')
   }
 }

+ 13 - 0
packages/revisions/migrations/mysql/1694425333972-rename_revisions_table.ts

@@ -0,0 +1,13 @@
+import { MigrationInterface, QueryRunner } from 'typeorm'
+
+export class RenameRevisionsTable1694425333972 implements MigrationInterface {
+  name = 'RenameRevisionsTable1694425333972'
+
+  public async up(queryRunner: QueryRunner): Promise<void> {
+    await queryRunner.query('RENAME TABLE `revisions` TO `revisions_revisions`')
+  }
+
+  public async down(): Promise<void> {
+    return
+  }
+}

+ 4 - 4
packages/revisions/migrations/sqlite/1682678053275-initial_boilerplate.ts

@@ -5,15 +5,15 @@ export class initialBoilerplate1682678053275 implements MigrationInterface {
 
   public async up(queryRunner: QueryRunner): Promise<void> {
     await queryRunner.query(
-      'CREATE TABLE "revisions" ("uuid" varchar PRIMARY KEY NOT NULL, "item_uuid" varchar(36) NOT NULL, "user_uuid" varchar(36), "content" text, "content_type" varchar(255), "items_key_id" varchar(255), "enc_item_key" text, "auth_hash" varchar(255), "creation_date" date, "created_at" datetime(6), "updated_at" datetime(6))',
+      'CREATE TABLE "revisions_revisions" ("uuid" varchar PRIMARY KEY NOT NULL, "item_uuid" varchar(36) NOT NULL, "user_uuid" varchar(36), "content" text, "content_type" varchar(255), "items_key_id" varchar(255), "enc_item_key" text, "auth_hash" varchar(255), "creation_date" date, "created_at" datetime(6), "updated_at" datetime(6))',
     )
-    await queryRunner.query('CREATE INDEX "item_uuid" ON "revisions" ("item_uuid") ')
-    await queryRunner.query('CREATE INDEX "user_uuid" ON "revisions" ("user_uuid") ')
+    await queryRunner.query('CREATE INDEX "item_uuid" ON "revisions_revisions" ("item_uuid") ')
+    await queryRunner.query('CREATE INDEX "user_uuid" ON "revisions_revisions" ("user_uuid") ')
   }
 
   public async down(queryRunner: QueryRunner): Promise<void> {
     await queryRunner.query('DROP INDEX "user_uuid"')
     await queryRunner.query('DROP INDEX "item_uuid"')
-    await queryRunner.query('DROP TABLE "revisions"')
+    await queryRunner.query('DROP TABLE "revisions_revisions"')
   }
 }

+ 13 - 11
packages/revisions/migrations/sqlite/1693915775491-add-shared-vault-information.ts

@@ -10,28 +10,30 @@ export class AddSharedVaultInformation1693915775491 implements MigrationInterfac
       'CREATE TABLE "temporary_revisions" ("uuid" varchar PRIMARY KEY NOT NULL, "item_uuid" varchar(36) NOT NULL, "user_uuid" varchar(36), "content" text, "content_type" varchar(255), "items_key_id" varchar(255), "enc_item_key" text, "auth_hash" varchar(255), "creation_date" date, "created_at" datetime(6), "updated_at" datetime(6), "edited_by" varchar(36), "shared_vault_uuid" varchar(36), "key_system_identifier" varchar(36))',
     )
     await queryRunner.query(
-      'INSERT INTO "temporary_revisions"("uuid", "item_uuid", "user_uuid", "content", "content_type", "items_key_id", "enc_item_key", "auth_hash", "creation_date", "created_at", "updated_at") SELECT "uuid", "item_uuid", "user_uuid", "content", "content_type", "items_key_id", "enc_item_key", "auth_hash", "creation_date", "created_at", "updated_at" FROM "revisions"',
+      'INSERT INTO "temporary_revisions"("uuid", "item_uuid", "user_uuid", "content", "content_type", "items_key_id", "enc_item_key", "auth_hash", "creation_date", "created_at", "updated_at") SELECT "uuid", "item_uuid", "user_uuid", "content", "content_type", "items_key_id", "enc_item_key", "auth_hash", "creation_date", "created_at", "updated_at" FROM "revisions_revisions"',
+    )
+    await queryRunner.query('DROP TABLE "revisions_revisions"')
+    await queryRunner.query('ALTER TABLE "temporary_revisions" RENAME TO "revisions_revisions"')
+    await queryRunner.query('CREATE INDEX "user_uuid" ON "revisions_revisions" ("user_uuid") ')
+    await queryRunner.query('CREATE INDEX "item_uuid" ON "revisions_revisions" ("item_uuid") ')
+    await queryRunner.query(
+      'CREATE INDEX "index_revisions_on_shared_vault_uuid" ON "revisions_revisions" ("shared_vault_uuid") ',
     )
-    await queryRunner.query('DROP TABLE "revisions"')
-    await queryRunner.query('ALTER TABLE "temporary_revisions" RENAME TO "revisions"')
-    await queryRunner.query('CREATE INDEX "user_uuid" ON "revisions" ("user_uuid") ')
-    await queryRunner.query('CREATE INDEX "item_uuid" ON "revisions" ("item_uuid") ')
-    await queryRunner.query('CREATE INDEX "index_revisions_on_shared_vault_uuid" ON "revisions" ("shared_vault_uuid") ')
   }
 
   public async down(queryRunner: QueryRunner): Promise<void> {
     await queryRunner.query('DROP INDEX "index_revisions_on_shared_vault_uuid"')
     await queryRunner.query('DROP INDEX "item_uuid"')
     await queryRunner.query('DROP INDEX "user_uuid"')
-    await queryRunner.query('ALTER TABLE "revisions" RENAME TO "temporary_revisions"')
+    await queryRunner.query('ALTER TABLE "revisions_revisions" RENAME TO "temporary_revisions"')
     await queryRunner.query(
-      'CREATE TABLE "revisions" ("uuid" varchar PRIMARY KEY NOT NULL, "item_uuid" varchar(36) NOT NULL, "user_uuid" varchar(36), "content" text, "content_type" varchar(255), "items_key_id" varchar(255), "enc_item_key" text, "auth_hash" varchar(255), "creation_date" date, "created_at" datetime(6), "updated_at" datetime(6))',
+      'CREATE TABLE "revisions_revisions" ("uuid" varchar PRIMARY KEY NOT NULL, "item_uuid" varchar(36) NOT NULL, "user_uuid" varchar(36), "content" text, "content_type" varchar(255), "items_key_id" varchar(255), "enc_item_key" text, "auth_hash" varchar(255), "creation_date" date, "created_at" datetime(6), "updated_at" datetime(6))',
     )
     await queryRunner.query(
-      'INSERT INTO "revisions"("uuid", "item_uuid", "user_uuid", "content", "content_type", "items_key_id", "enc_item_key", "auth_hash", "creation_date", "created_at", "updated_at") SELECT "uuid", "item_uuid", "user_uuid", "content", "content_type", "items_key_id", "enc_item_key", "auth_hash", "creation_date", "created_at", "updated_at" FROM "temporary_revisions"',
+      'INSERT INTO "revisions_revisions"("uuid", "item_uuid", "user_uuid", "content", "content_type", "items_key_id", "enc_item_key", "auth_hash", "creation_date", "created_at", "updated_at") SELECT "uuid", "item_uuid", "user_uuid", "content", "content_type", "items_key_id", "enc_item_key", "auth_hash", "creation_date", "created_at", "updated_at" FROM "temporary_revisions"',
     )
     await queryRunner.query('DROP TABLE "temporary_revisions"')
-    await queryRunner.query('CREATE INDEX "item_uuid" ON "revisions" ("item_uuid") ')
-    await queryRunner.query('CREATE INDEX "user_uuid" ON "revisions" ("user_uuid") ')
+    await queryRunner.query('CREATE INDEX "item_uuid" ON "revisions_revisions" ("item_uuid") ')
+    await queryRunner.query('CREATE INDEX "user_uuid" ON "revisions_revisions" ("user_uuid") ')
   }
 }

+ 1 - 1
packages/revisions/src/Infra/TypeORM/SQL/SQLRevision.ts

@@ -2,7 +2,7 @@ import { Column, Entity, Index } from 'typeorm'
 
 import { SQLLegacyRevision } from './SQLLegacyRevision'
 
-@Entity({ name: 'revisions' })
+@Entity({ name: 'revisions_revisions' })
 export class SQLRevision extends SQLLegacyRevision {
   @Column({
     type: 'varchar',