Files
Docker-Proxy/hubcmdui/scripts/init-database.js

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
};