Files
WebWork/backend/config/database.js
祀梦 b1da021185 feat: 实现教师资料更新、操作日志和系统设置功能
新增教师资料更新功能,包括个人信息修改和密码更新
添加操作日志记录系统,记录用户关键操作
实现系统设置模块,支持动态配置系统参数
重构数据库模型,新增教师表和系统设置表
优化成绩录入逻辑,支持平时分、期中和期末成绩计算
添加数据导出功能,支持学生、教师和成绩数据导出
完善管理员后台,增加统计图表和操作日志查看
2025-12-22 23:30:01 +08:00

71 lines
2.1 KiB
JavaScript

const sqlite3 = require('sqlite3').verbose();
const path = require('path');
const fs = require('fs');
const dbPath = path.resolve(__dirname, '../database.sqlite');
const db = new sqlite3.Database(dbPath);
// Promisify query method
const query = (sql, params = []) => {
return new Promise((resolve, reject) => {
// Handle SELECT vs INSERT/UPDATE/DELETE
const trimmedSql = sql.trim().toUpperCase();
if (trimmedSql.startsWith('SELECT') || trimmedSql.startsWith('PRAGMA')) {
db.all(sql, params, (err, rows) => {
if (err) {
console.error('Database query error:', err);
reject(err);
} else {
resolve(rows);
}
});
} else {
db.run(sql, params, function(err) {
if (err) {
console.error('Database execution error:', err);
reject(err);
} else {
// Normalize result to look like MySQL result
// this.lastID, this.changes
resolve({
insertId: this.lastID,
affectedRows: this.changes,
warningStatus: 0
});
}
});
}
});
};
// Mock Pool object for compatibility
const pool = {
query: query,
execute: (sql, params) => query(sql, params).then(res => [res]), // Wrap in array for mysql2 compatibility
getConnection: () => Promise.resolve({
release: () => {},
query: query,
execute: (sql, params) => query(sql, params).then(res => [res]),
beginTransaction: () => query('BEGIN TRANSACTION'),
commit: () => query('COMMIT'),
rollback: () => query('ROLLBACK')
})
};
const testConnection = async () => {
try {
await query('SELECT 1');
console.log('SQLite 数据库连接成功');
return true;
} catch (error) {
console.error('SQLite 数据库连接失败:', error.message);
return false;
}
};
module.exports = {
pool,
query,
testConnection
};