完善字段信息
This commit is contained in:
37
server/db.js
37
server/db.js
@@ -2,7 +2,6 @@ const Database = require('better-sqlite3');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
// 确保数据目录存在
|
||||
const dataDir = '/app/data';
|
||||
if (!fs.existsSync(dataDir)) {
|
||||
fs.mkdirSync(dataDir, { recursive: true });
|
||||
@@ -10,12 +9,9 @@ if (!fs.existsSync(dataDir)) {
|
||||
|
||||
const dbPath = path.join(dataDir, 'xiaocai.db');
|
||||
const db = new Database(dbPath);
|
||||
|
||||
|
||||
// 启用 WAL 模式提升并发
|
||||
db.pragma('journal_mode = WAL');
|
||||
|
||||
// 创建表
|
||||
// 创建基础表(如果不存在)
|
||||
db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
username TEXT PRIMARY KEY,
|
||||
@@ -27,7 +23,7 @@ db.exec(`
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
created_by TEXT NOT NULL,
|
||||
white_list TEXT DEFAULT '', -- 逗号分隔用户名,空表示所有人
|
||||
white_list TEXT DEFAULT '',
|
||||
created_at TEXT DEFAULT (datetime('now','localtime'))
|
||||
);
|
||||
|
||||
@@ -36,7 +32,7 @@ db.exec(`
|
||||
room_id TEXT NOT NULL,
|
||||
user TEXT NOT NULL,
|
||||
text TEXT,
|
||||
attachments TEXT, -- JSON array of file paths
|
||||
attachments TEXT,
|
||||
timestamp TEXT DEFAULT (datetime('now','localtime')),
|
||||
FOREIGN KEY(room_id) REFERENCES rooms(id)
|
||||
);
|
||||
@@ -45,13 +41,17 @@ db.exec(`
|
||||
id TEXT PRIMARY KEY,
|
||||
room_id TEXT NOT NULL,
|
||||
item TEXT,
|
||||
amount REAL,
|
||||
method TEXT,
|
||||
quantity INTEGER DEFAULT 1,
|
||||
unit_price REAL DEFAULT 0,
|
||||
amount REAL DEFAULT 0,
|
||||
freight REAL DEFAULT 0,
|
||||
payment_method TEXT DEFAULT '未指定',
|
||||
invoice_type TEXT DEFAULT '无票',
|
||||
status TEXT DEFAULT '待处理',
|
||||
applicant TEXT,
|
||||
remarks TEXT DEFAULT '',
|
||||
created_at TEXT DEFAULT (datetime('now','localtime')),
|
||||
updated_at TEXT DEFAULT (datetime('now','localtime')),
|
||||
ai_notes TEXT,
|
||||
FOREIGN KEY(room_id) REFERENCES rooms(id)
|
||||
);
|
||||
|
||||
@@ -75,4 +75,21 @@ db.exec(`
|
||||
);
|
||||
`);
|
||||
|
||||
// 为已有数据库添加可能缺失的列(安全迁移,忽略错误)
|
||||
const migrations = [
|
||||
`ALTER TABLE purchases ADD COLUMN quantity INTEGER DEFAULT 1`,
|
||||
`ALTER TABLE purchases ADD COLUMN unit_price REAL DEFAULT 0`,
|
||||
`ALTER TABLE purchases ADD COLUMN freight REAL DEFAULT 0`,
|
||||
`ALTER TABLE purchases ADD COLUMN invoice_type TEXT DEFAULT '无票'`,
|
||||
`ALTER TABLE purchases ADD COLUMN payment_method TEXT DEFAULT '未指定'`,
|
||||
`ALTER TABLE purchases ADD COLUMN remarks TEXT DEFAULT ''`,
|
||||
];
|
||||
for (const sql of migrations) {
|
||||
try {
|
||||
db.exec(sql);
|
||||
} catch (e) {
|
||||
// 列已存在或其他错误,忽略
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = db;
|
||||
|
||||
Reference in New Issue
Block a user