finance-api/scripts/run-migrations.js

42 lines
1.2 KiB
JavaScript

const { DataSource } = require('typeorm');
const path = require('path');
const dataSourceOptions = {
type: 'postgres',
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432', 10),
username: process.env.DB_USERNAME || 'finance_user',
password: process.env.DB_PASSWORD || 'dev_password_123',
database: process.env.DB_NAME || 'finance_app',
migrations: [path.join(__dirname, '../dist/database/migrations/*.js')],
logging: true,
};
async function runMigrations() {
console.log('🔄 Running database migrations...');
const dataSource = new DataSource(dataSourceOptions);
try {
await dataSource.initialize();
console.log('📦 Database connection established');
const migrations = await dataSource.runMigrations({ transaction: 'all' });
if (migrations.length === 0) {
console.log('✅ No pending migrations');
} else {
console.log(`✅ Successfully ran ${migrations.length} migration(s):`);
migrations.forEach((m) => console.log(` - ${m.name}`));
}
await dataSource.destroy();
console.log('🔌 Database connection closed');
} catch (error) {
console.error('❌ Migration failed:', error.message);
process.exit(1);
}
}
runMigrations();