1693915383950-add-shared-vault-information.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { MigrationInterface, QueryRunner } from 'typeorm'
  2. export class AddSharedVaultInformation1693915383950 implements MigrationInterface {
  3. public async up(queryRunner: QueryRunner): Promise<void> {
  4. await this.renameRevisionsTable(queryRunner)
  5. await queryRunner.query('ALTER TABLE `revisions_revisions` ADD `edited_by` varchar(36) NULL, ALGORITHM = INSTANT')
  6. await queryRunner.query(
  7. 'ALTER TABLE `revisions_revisions` ADD `shared_vault_uuid` varchar(36) NULL, ALGORITHM = INSTANT',
  8. )
  9. await queryRunner.query(
  10. 'ALTER TABLE `revisions_revisions` ADD `key_system_identifier` varchar(36) NULL, ALGORITHM = INSTANT',
  11. )
  12. await queryRunner.query(
  13. 'CREATE INDEX `index_revisions_on_shared_vault_uuid` ON `revisions_revisions` (`shared_vault_uuid`)',
  14. )
  15. }
  16. public async down(queryRunner: QueryRunner): Promise<void> {
  17. await queryRunner.query('DROP INDEX `index_revisions_on_shared_vault_uuid` ON `revisions_revisions`')
  18. await queryRunner.query('ALTER TABLE `revisions_revisions` DROP COLUMN `key_system_identifier`')
  19. await queryRunner.query('ALTER TABLE `revisions_revisions` DROP COLUMN `shared_vault_uuid`')
  20. await queryRunner.query('ALTER TABLE `revisions_revisions` DROP COLUMN `last_edited_by`')
  21. }
  22. private async renameRevisionsTable(queryRunner: QueryRunner) {
  23. const revisionsTableExistsQueryResult = await queryRunner.manager.query(
  24. 'SELECT COUNT(*) as count FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = "revisions"',
  25. )
  26. const revisionsTableExists = revisionsTableExistsQueryResult[0].count === 1
  27. if (revisionsTableExists) {
  28. await queryRunner.query('ALTER TABLE `revisions` RENAME TO `revisions_revisions`, ALGORITHM=INSTANT')
  29. }
  30. }
  31. }