Files
grow-api/src/database/migrations/1720300000000-AddReserveStatusHistory.ts
T
2026-06-30 11:46:14 +03:30

71 lines
1.9 KiB
TypeScript

import {
MigrationInterface,
QueryRunner,
Table,
TableForeignKey,
TableIndex,
} from 'typeorm';
export class AddReserveStatusHistory1720300000000 implements MigrationInterface {
name = 'AddReserveStatusHistory1720300000000';
public async up(queryRunner: QueryRunner): Promise<void> {
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<void> {
await queryRunner.dropTable('reserve_status_history', true);
}
}