修复: 改用sqlite3替代better-sqlite3
This commit is contained in:
parent
f6c7502243
commit
1e4b74b7ca
@ -12,7 +12,7 @@
|
||||
"express": "^4.18.0",
|
||||
"sqlite3": "^5.1.0",
|
||||
"jsonwebtoken": "^9.0.0",
|
||||
"multer": "^1.4.5",
|
||||
"multer": "^1.4.5-lts.1",
|
||||
"bcrypt": "^5.1.0",
|
||||
"cors": "^2.8.5"
|
||||
},
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
// Simple SQLite database wrapper
|
||||
// In production, use better-sqlite3 or similar
|
||||
// Simple SQLite database wrapper using sqlite3
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
const Database = require('better-sqlite3');
|
||||
const db = new Database('clouddisk.db');
|
||||
const dbPath = process.env.DB_PATH || './clouddisk.db';
|
||||
const db = new sqlite3.Database(dbPath);
|
||||
|
||||
// Initialize tables
|
||||
db.exec(`
|
||||
db.serialize(() => {
|
||||
db.run(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT UNIQUE NOT NULL,
|
||||
@ -15,8 +16,10 @@ db.exec(`
|
||||
storage_limit INTEGER DEFAULT 10737418240,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
)
|
||||
`);
|
||||
|
||||
db.run(`
|
||||
CREATE TABLE IF NOT EXISTS files (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL,
|
||||
@ -32,8 +35,10 @@ db.exec(`
|
||||
deleted_at DATETIME,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id),
|
||||
FOREIGN KEY (parent_id) REFERENCES files(id)
|
||||
);
|
||||
)
|
||||
`);
|
||||
|
||||
db.run(`
|
||||
CREATE TABLE IF NOT EXISTS shares (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
file_id INTEGER NOT NULL,
|
||||
@ -43,23 +48,10 @@ db.exec(`
|
||||
view_count INTEGER DEFAULT 0,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (file_id) REFERENCES files(id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sync_logs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL,
|
||||
file_id INTEGER,
|
||||
action TEXT,
|
||||
status TEXT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
);
|
||||
)
|
||||
`);
|
||||
|
||||
module.exports = db;
|
||||
|
||||
// Sync tables (for reference - would be in migration in production)
|
||||
db.exec(`
|
||||
db.run(`
|
||||
CREATE TABLE IF NOT EXISTS sync_status (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL,
|
||||
@ -68,5 +60,27 @@ db.exec(`
|
||||
total_files INTEGER DEFAULT 0,
|
||||
synced_files INTEGER DEFAULT 0,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
);
|
||||
)
|
||||
`);
|
||||
});
|
||||
|
||||
// Wrapper functions to match the old API
|
||||
const query = (sql, params = []) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.all(sql, params, (err, rows) => {
|
||||
if (err) reject(err);
|
||||
else resolve(rows);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const run = (sql, params = []) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.run(sql, params, function(err) {
|
||||
if (err) reject(err);
|
||||
else resolve({ lastInsertRowid: this.lastID, changes: this.changes });
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = { query, run, db };
|
||||
|
||||
Loading…
Reference in New Issue
Block a user