Files
dmenu-api/database/migrations/Migration20260714170013_changeOrderStatus.ts
2026-07-14 21:04:07 +03:30

82 lines
1.6 KiB
TypeScript

import { Migration } from '@mikro-orm/migrations';
export class Migration20260714170013_changeOrderStatus extends Migration {
public async up(): Promise<void> {
// remove old constraint
this.addSql(`
ALTER TABLE orders
DROP CONSTRAINT IF EXISTS orders_status_check;
`);
// migrate data
this.addSql(`
UPDATE orders
SET status='new'
WHERE status='pendingPayment';
`);
this.addSql(`
UPDATE orders
SET status='completed'
WHERE status='paid';
`);
// create new constraint
this.addSql(`
ALTER TABLE orders
ADD CONSTRAINT orders_status_check
CHECK (
status IN (
'new',
'preparing',
'deliveredToWaiter',
'deliveredToReceptionist',
'shipped',
'canceled',
'completed'
)
);
`);
}
public async down(): Promise<void> {
this.addSql(`
ALTER TABLE "orders"
DROP CONSTRAINT IF EXISTS "orders_status_check";
`);
this.addSql(`
UPDATE "orders"
SET "status" = 'pendingPayment'
WHERE "status" = 'new';
`);
this.addSql(`
UPDATE "orders"
SET "status" = 'paid'
WHERE "status" = 'completed';
`);
this.addSql(`
ALTER TABLE "orders"
ADD CONSTRAINT "orders_status_check"
CHECK (
"status" IN (
'pendingPayment',
'preparing',
'deliveredToWaiter',
'deliveredToReceptionist',
'shipped',
'paid',
'canceled',
'completed'
)
);
`);
}
}