chore: initial import
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
const { Client } = require('pg');
|
||||
const path = require('path');
|
||||
require('dotenv').config({ path: path.join(__dirname, '../.env') });
|
||||
|
||||
const createDb = async () => {
|
||||
const dbName = process.env.DB_DATABASE || 'stsystem';
|
||||
|
||||
// 连接到默认的 postgres 数据库
|
||||
const client = new Client({
|
||||
user: process.env.DB_USER,
|
||||
host: process.env.DB_HOST,
|
||||
database: 'postgres', // 连接到默认数据库
|
||||
password: process.env.DB_PASSWORD,
|
||||
port: process.env.DB_PORT,
|
||||
});
|
||||
|
||||
try {
|
||||
await client.connect();
|
||||
console.log(`已连接到 postgres 数据库,正在检查 ${dbName} 是否存在...`);
|
||||
|
||||
const res = await client.query(`SELECT 1 FROM pg_database WHERE datname = $1`, [dbName]);
|
||||
|
||||
if (res.rows.length === 0) {
|
||||
console.log(`数据库 ${dbName} 不存在,正在创建...`);
|
||||
// CREATE DATABASE 不能在事务块中运行,也不能使用参数化查询
|
||||
await client.query(`CREATE DATABASE "${dbName}"`);
|
||||
console.log(`数据库 ${dbName} 创建成功!`);
|
||||
} else {
|
||||
console.log(`数据库 ${dbName} 已存在,跳过创建。`);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('创建数据库失败:', err);
|
||||
// 如果是因为 postgres 数据库不存在(极少见)或者密码错误,这里会报错
|
||||
// 但我们不应该阻塞后续流程,也许用户已经手动创建了 stsystem
|
||||
// 不过为了安全起见,如果这一步失败,通常意味着配置错误,还是退出比较好
|
||||
process.exit(1);
|
||||
} finally {
|
||||
await client.end();
|
||||
}
|
||||
};
|
||||
|
||||
createDb();
|
||||
Reference in New Issue
Block a user