1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /**
- * 数据库初始化脚本
- */
- 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
- };
|