stagingbackend / src /db /migrate9.js
Antaram's picture
Upload 35 files
a50a3a9 verified
Raw
History Blame Contribute Delete
2 kB
const pool = require('./config');
const MIGRATION_KEY = 'migrate9_add_gaadi_number_to_expenses';
/**
* Add gaadi_number (vehicle registration number) to both expense tables.
* Purely additive — no backfill, no math impact. Exists so Jawaak invoices
* can record the vehicle number below "गाडी भरणी" in the summary.
*/
const migrate9 = async () => {
const client = await pool.connect();
try {
console.log('Starting database migration (migrate9)...');
await client.query('BEGIN');
await client.query(`
CREATE TABLE IF NOT EXISTS migration_history (
key VARCHAR(120) PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
`);
const already = await client.query(
'SELECT key FROM migration_history WHERE key = $1',
[MIGRATION_KEY]
);
if (already.rows.length > 0) {
await client.query('COMMIT');
console.log('migrate9 already applied. Skipping.');
return;
}
await client.query(`
ALTER TABLE expenses
ADD COLUMN IF NOT EXISTS gaadi_number VARCHAR(50)
`);
console.log(' Added gaadi_number to expenses');
await client.query(`
ALTER TABLE patti_expenses
ADD COLUMN IF NOT EXISTS gaadi_number VARCHAR(50)
`);
console.log(' Added gaadi_number to patti_expenses');
await client.query(
'INSERT INTO migration_history(key) VALUES ($1)',
[MIGRATION_KEY]
);
await client.query('COMMIT');
console.log('migrate9 completed successfully!');
} catch (error) {
await client.query('ROLLBACK');
console.error('migrate9 failed:', error);
throw error;
} finally {
client.release();
await pool.end();
}
};
migrate9().catch((err) => {
console.error('Fatal error:', err);
process.exit(1);
});