1669636497932-remove-date-indexes.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { MigrationInterface, QueryRunner } from 'typeorm'
  2. export class removeDateIndexes1669636497932 implements MigrationInterface {
  3. name = 'removeDateIndexes1669636497932'
  4. public async up(queryRunner: QueryRunner): Promise<void> {
  5. await this.renameRevisionsTable(queryRunner)
  6. const indexRevisionsOnCreatedAt = await queryRunner.manager.query(
  7. 'SHOW INDEX FROM `revisions_revisions` where `key_name` = "created_at"',
  8. )
  9. const indexRevisionsOnCreatedAtExist = indexRevisionsOnCreatedAt && indexRevisionsOnCreatedAt.length > 0
  10. if (indexRevisionsOnCreatedAtExist) {
  11. await queryRunner.query('DROP INDEX `created_at` ON `revisions_revisions`')
  12. }
  13. const indexRevisionsOnCreationDate = await queryRunner.manager.query(
  14. 'SHOW INDEX FROM `revisions_revisions` where `key_name` = "creation_date"',
  15. )
  16. const indexRevisionsOnCreationDateAtExist = indexRevisionsOnCreationDate && indexRevisionsOnCreationDate.length > 0
  17. if (indexRevisionsOnCreationDateAtExist) {
  18. await queryRunner.query('DROP INDEX `creation_date` ON `revisions_revisions`')
  19. }
  20. }
  21. public async down(queryRunner: QueryRunner): Promise<void> {
  22. await queryRunner.query('CREATE INDEX `creation_date` ON `revisions_revisions` (`creation_date`)')
  23. await queryRunner.query('CREATE INDEX `created_at` ON `revisions_revisions` (`created_at`)')
  24. }
  25. private async renameRevisionsTable(queryRunner: QueryRunner) {
  26. const revisionsTableExistsQueryResult = await queryRunner.manager.query(
  27. 'SELECT COUNT(*) as count FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = "revisions"',
  28. )
  29. const revisionsTableExists = revisionsTableExistsQueryResult[0].count === 1
  30. if (revisionsTableExists) {
  31. await queryRunner.query('ALTER TABLE `revisions` RENAME TO `revisions_revisions`, ALGORITHM=INSTANT')
  32. }
  33. }
  34. }