diff --git a/database/migrations/Migration20260626150000.ts b/database/migrations/Migration20260626150000.ts deleted file mode 100644 index f6cb291..0000000 --- a/database/migrations/Migration20260626150000.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Migration } from '@mikro-orm/migrations'; - -export class Migration20260626150000 extends Migration { - - override async up(): Promise { - this.addSql(`DROP TRIGGER IF EXISTS trg_invoice_items_recalc ON invoice_items;`); - this.addSql(` - CREATE TRIGGER trg_invoice_items_recalc - AFTER INSERT OR UPDATE OR DELETE - ON invoice_items - FOR EACH ROW - EXECUTE FUNCTION recalc_invoice_totals(); - `); - - this.addSql(`DROP TRIGGER IF EXISTS trg_payments_recalc ON payments;`); - this.addSql(` - CREATE TRIGGER trg_payments_recalc - AFTER INSERT OR UPDATE OR DELETE - ON payments - FOR EACH ROW - EXECUTE FUNCTION recalc_invoice_payments(); - `); - - this.addSql(` - UPDATE invoice_items - SET quantity = quantity - WHERE deleted_at IS NULL; - `); - } - - override async down(): Promise { - this.addSql(`DROP TRIGGER IF EXISTS trg_invoice_items_recalc ON invoice_items;`); - this.addSql(`DROP TRIGGER IF EXISTS trg_payments_recalc ON payments;`); - } - -} diff --git a/package.json b/package.json index 7b5e0cb..dd8df72 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "scripts": { "db:create": "npx mikro-orm schema:create --run --config ./src/config/mikro-orm.config.dev.ts", "db:update": "npx mikro-orm schema:update --run --config ./src/config/mikro-orm.config.dev.ts ", - "db:drop": "npx mikro-orm schema:drop --run --config ./src/config/mikro-orm.config.dev.ts", + "db:drop": "npx mikro-orm schema:drop --run --config ./src/config/mikro-orm.config.dev.ts && node scripts/db-drop-extras.js", "db:refresh": "npm run db:drop && npm run db:create ", "db:reset": "npm run db:drop && npm run db:create && npm run migration:up && npm run db:seed", "db:seed": "npx mikro-orm seeder:run --config ./src/config/mikro-orm.config.dev.ts", diff --git a/scripts/db-drop-extras.js b/scripts/db-drop-extras.js new file mode 100644 index 0000000..6d48c16 --- /dev/null +++ b/scripts/db-drop-extras.js @@ -0,0 +1,26 @@ +require('dotenv').config(); +const { Client } = require('pg'); + +async function main() { + const client = new Client({ + host: process.env.DB_HOST, + port: process.env.DB_PORT, + user: process.env.DB_USER, + password: process.env.DB_PASS, + database: process.env.DB_NAME, + }); + + await client.connect(); + + // schema:drop removes entity tables (and their triggers) but keeps these objects. + await client.query('DROP TABLE IF EXISTS migrations CASCADE'); + await client.query('DROP FUNCTION IF EXISTS recalc_invoice_totals() CASCADE'); + await client.query('DROP FUNCTION IF EXISTS recalc_invoice_payments() CASCADE'); + + await client.end(); +} + +main().catch((error) => { + console.error(error); + process.exit(1); +});