Files
Web_UploadTest_Rcu_Dev/scripts/init_db.js

46 lines
1.3 KiB
JavaScript
Raw Normal View History

require('dotenv').config();
const { Client } = require('pg');
const fs = require('fs');
const path = require('path');
const getDbConfig = (database) => ({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database
});
const ensureDatabase = async () => {
const adminClient = new Client(getDbConfig('postgres'));
await adminClient.connect();
const dbName = process.env.DB_NAME;
const exists = await adminClient.query('SELECT 1 FROM pg_database WHERE datname = $1', [dbName]);
if (exists.rowCount === 0) {
await adminClient.query(`CREATE DATABASE ${dbName}`);
}
await adminClient.end();
};
const ensureSchema = async () => {
const dbClient = new Client(getDbConfig(process.env.DB_NAME));
await dbClient.connect();
const sqlPath = path.join(__dirname, 'init_db.sql');
const sql = fs.readFileSync(sqlPath, 'utf8');
await dbClient.query(sql);
await dbClient.end();
};
const run = async () => {
try {
await ensureDatabase();
await ensureSchema();
console.log('Database initialization complete.');
} catch (err) {
console.error('Database initialization failed:', err.message);
process.exit(1);
}
};
run();