- 添加升级服务主逻辑,包括定时触发升级、状态查询和日志记录 - 实现数据库初始化脚本和日志表结构 - 添加PM2部署配置文件 - 实现环境变量配置系统 - 添加API客户端模块处理外部接口调用 - 实现升级状态轮询和超时处理机制 - 添加测试用例验证核心功能
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
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();
|