1631529502150-add_revision_for_duplicated_items.ts 1.2 KB

1234567891011121314151617181920212223242526
  1. import { MigrationInterface, QueryRunner } from 'typeorm'
  2. import { v4 } from 'uuid'
  3. export class addRevisionForDuplicatedItems1631529502150 implements MigrationInterface {
  4. public async up(queryRunner: QueryRunner): Promise<void> {
  5. const itemRevisions = await queryRunner.manager.query(
  6. 'SELECT r.uuid as originalRevisionUuid, ir.item_uuid as properItemUuid, ir.uuid as relationUuid FROM revisions r INNER JOIN item_revisions ir ON ir.revision_uuid = r.uuid AND ir.item_uuid <> r.item_uuid',
  7. )
  8. for (const itemRevision of itemRevisions) {
  9. const revisionUuid = v4()
  10. await queryRunner.manager.query(
  11. `INSERT INTO revisions (uuid, item_uuid, content, content_type, items_key_id, enc_item_key, auth_hash, creation_date, created_at, updated_at) SELECT "${revisionUuid}", "${itemRevision['properItemUuid']}", content, content_type, items_key_id, enc_item_key, auth_hash, creation_date, created_at, updated_at FROM revisions WHERE uuid = "${itemRevision['originalRevisionUuid']}"`,
  12. )
  13. await queryRunner.manager.query(
  14. `UPDATE item_revisions SET revision_uuid = "${revisionUuid}" WHERE uuid = "${itemRevision['relationUuid']}"`,
  15. )
  16. }
  17. }
  18. public async down(): Promise<void> {
  19. return
  20. }
  21. }