import { MigrationInterface, QueryRunner, Table, TableForeignKey, TableIndex, } from 'typeorm'; export class AddReserveStatusHistory1720300000000 implements MigrationInterface { name = 'AddReserveStatusHistory1720300000000'; public async up(queryRunner: QueryRunner): Promise { await queryRunner.createTable( new Table({ name: 'reserve_status_history', columns: [ { name: 'id', type: 'uuid', isPrimary: true, generationStrategy: 'uuid', default: 'gen_random_uuid()', }, { name: 'reserveId', type: 'uuid' }, { name: 'fromStatus', type: 'reserves_status_enum', isNullable: true, }, { name: 'toStatus', type: 'reserves_status_enum' }, { name: 'changedByUserId', type: 'uuid', isNullable: true }, { name: 'createdAt', type: 'timestamp', default: 'now()' }, ], }), true, ); await queryRunner.createForeignKey( 'reserve_status_history', new TableForeignKey({ columnNames: ['reserveId'], referencedTableName: 'reserves', referencedColumnNames: ['id'], onDelete: 'CASCADE', }), ); await queryRunner.createForeignKey( 'reserve_status_history', new TableForeignKey({ columnNames: ['changedByUserId'], referencedTableName: 'users', referencedColumnNames: ['id'], onDelete: 'SET NULL', }), ); await queryRunner.createIndex( 'reserve_status_history', new TableIndex({ name: 'IDX_reserve_status_history_reserveId_createdAt', columnNames: ['reserveId', 'createdAt'], }), ); } public async down(queryRunner: QueryRunner): Promise { await queryRunner.dropTable('reserve_status_history', true); } }