mirror of
https://github.com/dqzboy/Docker-Proxy.git
synced 2026-01-12 16:25:42 +08:00
93 lines
2.5 KiB
JavaScript
93 lines
2.5 KiB
JavaScript
/**
|
|
* 数据库初始化脚本
|
|
*/
|
|
const database = require('../database/database');
|
|
const userServiceDB = require('../services/userServiceDB');
|
|
const configServiceDB = require('../services/configServiceDB');
|
|
const logger = require('../logger');
|
|
|
|
async function initializeDatabase() {
|
|
try {
|
|
logger.info('开始初始化数据库...');
|
|
|
|
// 连接数据库
|
|
await database.connect();
|
|
|
|
// 检查数据库是否已经初始化
|
|
const isInitialized = await database.isInitialized();
|
|
if (isInitialized) {
|
|
logger.info('数据库已经初始化,跳过重复初始化');
|
|
return;
|
|
}
|
|
|
|
// 创建数据表
|
|
await database.createTables();
|
|
|
|
// 创建默认管理员用户(如果不存在)
|
|
await database.createDefaultAdmin();
|
|
|
|
// 创建默认文档
|
|
await database.createDefaultDocuments();
|
|
|
|
// 初始化默认配置
|
|
await configServiceDB.initializeDefaultConfig();
|
|
|
|
// 标记数据库已初始化
|
|
await database.markAsInitialized();
|
|
|
|
logger.info('数据库初始化完成!');
|
|
|
|
// 显示数据库信息
|
|
const userCount = await database.get('SELECT COUNT(*) as count FROM users');
|
|
const configCount = await database.get('SELECT COUNT(*) as count FROM configs');
|
|
const docCount = await database.get('SELECT COUNT(*) as count FROM documents');
|
|
|
|
logger.info(`数据库统计:`);
|
|
logger.info(` 用户数量: ${userCount.count}`);
|
|
logger.info(` 配置项数量: ${configCount.count}`);
|
|
logger.info(` 文档数量: ${docCount.count}`);
|
|
|
|
} catch (error) {
|
|
logger.error('数据库初始化失败:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 检查数据库是否已经初始化
|
|
*/
|
|
async function checkDatabaseInitialized() {
|
|
try {
|
|
// 检查用户表是否有数据
|
|
const userCount = await database.get('SELECT COUNT(*) as count FROM users');
|
|
if (userCount && userCount.count > 0) {
|
|
return true;
|
|
}
|
|
|
|
// 检查配置表是否有数据
|
|
const configCount = await database.get('SELECT COUNT(*) as count FROM configs');
|
|
if (configCount && configCount.count > 0) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
} catch (error) {
|
|
// 如果查询失败,认为数据库未初始化
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 如果直接运行此脚本,则执行初始化
|
|
if (require.main === module) {
|
|
initializeDatabase().then(() => {
|
|
process.exit(0);
|
|
}).catch((error) => {
|
|
logger.error('初始化过程出错:', error);
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
initializeDatabase
|
|
};
|