42 lines
1.2 KiB
JavaScript
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();
|