MCPcopy
hub / github.com/dqzboy/Docker-Proxy / isDatabaseReady

Function isDatabaseReady

hubcmdui/utils/database-checker.js:13–87  ·  view source on GitHub ↗

* 检查数据库是否已完全初始化

()

Source from the content-addressed store, hash-verified

11 * 检查数据库是否已完全初始化
12 */
13async function isDatabaseReady() {
14 return new Promise((resolve) => {
15 // 检查数据库文件是否存在
16 if (!fs.existsSync(DB_PATH)) {
17 resolve(false);
18 return;
19 }
20
21 // 检查文件大小
22 try {
23 const stats = fs.statSync(DB_PATH);
24 if (stats.size < 1024) {
25 resolve(false);
26 return;
27 }
28 } catch (error) {
29 resolve(false);
30 return;
31 }
32
33 // 检查数据库结构和数据
34 const db = new sqlite3.Database(DB_PATH, (err) => {
35 if (err) {
36 resolve(false);
37 return;
38 }
39
40 // 检查必要的表是否存在
41 const requiredTables = ['users', 'configs', 'documents'];
42 let checkedTables = 0;
43 let allTablesReady = true;
44 let tablesWithData = 0;
45
46 requiredTables.forEach(tableName => {
47 db.get(
48 `SELECT name FROM sqlite_master WHERE type='table' AND name=?`,
49 [tableName],
50 (err, row) => {
51 if (err || !row) {
52 allTablesReady = false;
53 checkedTables++;
54 checkComplete();
55 return;
56 }
57
58 // 检查表是否有数据(至少用户表和配置表应该有数据)
59 if (tableName === 'users' || tableName === 'configs') {
60 db.get(`SELECT COUNT(*) as count FROM ${tableName}`, (err, countRow) => {
61 if (err || !countRow || countRow.count === 0) {
62 allTablesReady = false;
63 } else {
64 tablesWithData++;
65 }
66 checkedTables++;
67 checkComplete();
68 });
69 } else {
70 checkedTables++;

Callers 2

startServerFunction · 0.85
needsInitFunction · 0.85

Calls 2

getMethod · 0.95
checkCompleteFunction · 0.85

Tested by

no test coverage detected