🎨 fix(db): 数据库更新优化

This commit is contained in:
BTMuli
2023-04-25 20:23:30 +08:00
parent 96018666c5
commit 89d2e214bc
3 changed files with 29 additions and 6 deletions

View File

@@ -429,7 +429,10 @@ async function checkDB () {
loading.value = false;
confirmShow.value = true;
} else {
snackbarText.value = "数据库表单完整!";
loadingTitle.value = "正在更新数据库表单...";
await TGSqlite.update();
loading.value = false;
snackbarText.value = "数据库已是最新!";
snackbarColor.value = "success";
snackbar.value = true;
}

View File

@@ -162,12 +162,14 @@ async function initAppData (): Promise<string[]> {
// 初始化应用版本
sqlRes.push(`
INSERT INTO AppData (key, value, updated)
VALUES ('appVersion', '${appVersion}', datetime('now', 'localtime'));
VALUES ('appVersion', '${appVersion}', datetime('now', 'localtime'))
ON CONFLICT(key) DO UPDATE SET value = '${appVersion}', updated = datetime('now', 'localtime');
`);
// 初始化应用数据更新时间
sqlRes.push(`
INSERT INTO AppData (key, value, updated)
VALUES ('dataUpdated', '${dataUpdated}', datetime('now', 'localtime'));
VALUES ('dataUpdated', '${dataUpdated}', datetime('now', 'localtime'))
ON CONFLICT(key) DO UPDATE SET value = '${dataUpdated}', updated = datetime('now', 'localtime');
`);
return sqlRes;
}
@@ -183,7 +185,8 @@ function initAchievementSeriesData (): string[] {
oriData.map((data) => {
const sql = `
INSERT INTO AchievementSeries (id, "order", name, version, icon, nameCard, updated)
VALUES (${data.id}, ${data.order}, '${data.name}', '${data.version}', '${data.icon}', '${data.card}', datetime('now', 'localtime'));
VALUES (${data.id}, ${data.order}, '${data.name}', '${data.version}', '${data.icon}', '${data.card}', datetime('now', 'localtime'))
ON CONFLICT(id) DO NOTHING;
`;
return sqlRes.push(sql);
});
@@ -201,7 +204,8 @@ function initAchievementData (): string[] {
oriData.map((data) => {
const sql = `
INSERT INTO Achievements (id, series, "order", name, description, reward, version, updated)
VALUES (${data.id}, ${data.series}, ${data.order}, '${data.name}', '${data.description}', ${data.reward}, '${data.version}', datetime('now', 'localtime'));
VALUES (${data.id}, ${data.series}, ${data.order}, '${data.name}', '${data.description}', ${data.reward}, '${data.version}', datetime('now', 'localtime'))
ON CONFLICT(id) DO NOTHING;
`;
return sqlRes.push(sql);
});
@@ -219,7 +223,8 @@ function initNameCardData (): string[] {
oriData.map((data) => {
const sql = `
INSERT INTO NameCard (name, description, icon, bg, profile, type, source, updated)
VALUES ('${data.name}', '${data.description}', '${data.icon}', '${data.bg}', '${data.profile}', ${data.type}, '${data.source}', datetime('now', 'localtime'));
VALUES ('${data.name}', '${data.description}', '${data.icon}', '${data.bg}', '${data.profile}', ${data.type}, '${data.source}', datetime('now', 'localtime'))
ON CONFLICT(id) DO NOTHING;
`;
return sqlRes.push(sql);
});

View File

@@ -53,6 +53,21 @@ class TGSqlite {
await db.close();
}
/**
* @description 已有数据表跟触发器不变的情况下,更新数据库数据
* @memberof TGSqlite
* @since Alpha v0.1.4
* @returns {Promise<void>}
*/
public async update (): Promise<void> {
const db = await Database.load(this.dbPath);
const sqlD = await initSQLiteData();
for (const item of sqlD) {
await db.execute(item);
}
await db.close();
}
/**
* @description 检测数据库完整性
* @memberof TGSqlite