XNSim/XNSimHtml/utils/version-utils.js

101 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const Database = require('better-sqlite3');
const { getXNCorePath } = require('./file-utils');
// 版本阶段枚举
const VERSION_STAGES = {
ALPHA: 'alpha', // 开发版
BETA: 'beta', // 测试版
RELEASE_CANDIDATE: 'rc', // 候选版
STABLE: 'stable' // 正式版
};
// 获取所有版本记录
function getAllVersions() {
try {
const xnCorePath = getXNCorePath();
const dbPath = xnCorePath + '/database/XNSim.db';
const db = new Database(dbPath, { readonly: true });
// 添加stage字段到查询中
const versions = db.prepare(`
SELECT verNum, date, time, title, note, author, stage
FROM version
ORDER BY date DESC, time DESC
`).all();
db.close();
return versions;
} catch (error) {
console.error('获取版本记录失败:', error);
throw error;
}
}
// 添加新版本记录
function addVersion(versionData) {
try {
const { verNum, date, time, title, note, author, stage } = versionData;
// 数据验证
if (!verNum || !date || !time || !title) {
throw new Error('版本号、日期、时间和标题不能为空');
}
// 验证版本阶段
if (stage && !Object.values(VERSION_STAGES).includes(stage)) {
throw new Error('无效的版本阶段');
}
const xnCorePath = getXNCorePath();
const dbPath = xnCorePath + '/database/XNSim.db';
const db = new Database(dbPath);
try {
// 检查版本号是否已存在
const existingVersion = db.prepare('SELECT verNum FROM version WHERE verNum = ?').get(verNum);
if (existingVersion) {
throw new Error('该版本号已存在');
}
// 插入新版本记录包含stage字段
const stmt = db.prepare(`
INSERT INTO version (
verNum, date, time, title, note, author, stage
) VALUES (?, ?, ?, ?, ?, ?, ?)
`);
const result = stmt.run(
verNum,
date,
time,
title,
note || '',
author || '未知用户',
stage || VERSION_STAGES.ALPHA // 默认为开发版
);
db.close();
if (result.changes > 0) {
return {
success: true,
message: '版本记录添加成功',
id: result.lastInsertRowid
};
} else {
throw new Error('添加版本记录失败');
}
} catch (dbError) {
db.close();
throw dbError;
}
} catch (error) {
console.error('添加版本记录失败:', error);
throw error;
}
}
module.exports = {
getAllVersions,
addVersion,
VERSION_STAGES
};