()
| 7 | const logger = require('../logger'); |
| 8 | |
| 9 | async function initializeDatabase() { |
| 10 | try { |
| 11 | logger.info('开始初始化数据库...'); |
| 12 | |
| 13 | // 连接数据库 |
| 14 | await database.connect(); |
| 15 | |
| 16 | // 始终运行 createTables 以确保新表被创建 (使用 IF NOT EXISTS 是安全的) |
| 17 | await database.createTables(); |
| 18 | |
| 19 | // 检查数据库是否已经初始化 |
| 20 | const isInitialized = await database.isInitialized(); |
| 21 | if (isInitialized) { |
| 22 | logger.info('数据库已经初始化,检查并初始化新配置...'); |
| 23 | // 即使已初始化,也要确保 Registry 配置存在 |
| 24 | await configServiceDB.initializeRegistryConfigs(); |
| 25 | return; |
| 26 | } |
| 27 | |
| 28 | // 创建默认管理员用户(如果不存在) |
| 29 | await database.createDefaultAdmin(); |
| 30 | |
| 31 | // 创建默认文档 |
| 32 | await database.createDefaultDocuments(); |
| 33 | |
| 34 | // 初始化默认配置 |
| 35 | await configServiceDB.initializeDefaultConfig(); |
| 36 | |
| 37 | // 初始化 Registry 配置 |
| 38 | await configServiceDB.initializeRegistryConfigs(); |
| 39 | |
| 40 | // 标记数据库已初始化 |
| 41 | await database.markAsInitialized(); |
| 42 | |
| 43 | logger.info('数据库初始化完成!'); |
| 44 | |
| 45 | // 显示数据库信息 |
| 46 | const userCount = await database.get('SELECT COUNT(*) as count FROM users'); |
| 47 | const configCount = await database.get('SELECT COUNT(*) as count FROM configs'); |
| 48 | const docCount = await database.get('SELECT COUNT(*) as count FROM documents'); |
| 49 | |
| 50 | logger.info(`数据库统计:`); |
| 51 | logger.info(` 用户数量: ${userCount.count}`); |
| 52 | logger.info(` 配置项数量: ${configCount.count}`); |
| 53 | logger.info(` 文档数量: ${docCount.count}`); |
| 54 | |
| 55 | } catch (error) { |
| 56 | logger.error('数据库初始化失败:', error); |
| 57 | process.exit(1); |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | /** |
| 62 | * 检查数据库是否已经初始化 |
no test coverage detected