electron-vue-exam-single/electron/service/system.js

61 lines
1.9 KiB
JavaScript

// 将 CommonJS 导入改为 ES 模块导入
import { getSystemDbPath } from '../db/path.js';
import { openDatabase } from '../db/utils.js';
// 获取系统配置
async function getSystemConfig() {
try {
const systemDb = await openDatabase(getSystemDbPath());
const configs = await systemDb.allAsync('SELECT key, value FROM config');
// 不要关闭连接,由连接池管理
const configMap = {};
configs.forEach(config => {
configMap[config.key] = config.value;
});
return configMap;
} catch (error) {
console.error('Get system config failed:', error);
throw error;
}
}
// 更新系统配置
async function updateSystemConfig(config) {
try {
const systemDb = await openDatabase(getSystemDbPath());
await systemDb.runAsync('BEGIN TRANSACTION');
for (const [key, value] of Object.entries(config)) {
await systemDb.runAsync('UPDATE config SET value = ? WHERE key = ?', [value, key]);
}
await systemDb.runAsync('COMMIT');
// 不要关闭连接,由连接池管理
return true;
} catch (error) {
await systemDb.runAsync('ROLLBACK');
// 不要关闭连接,由连接池管理
console.error('Update system config failed:', error);
throw error;
}
}
// 增加题库版本号
async function increaseQuestionBandVersion() {
try {
const systemDb = await openDatabase(getSystemDbPath());
await systemDb.runAsync('UPDATE config SET value = value + 1 WHERE key = ?', ['question_bank_version']);
// 不要关闭连接,由连接池管理
return true;
} catch (error) {
console.error('Increase question bank version failed:', error);
throw error;
}
}
export {
getSystemConfig,
updateSystemConfig,
increaseQuestionBandVersion
};