/** * @file core database update.ts * @description SQLite 数据库更新相关 * @since Alpha v0.1.4 */ // tauri import Database from "tauri-plugin-sql-api"; // local import { TGAppData } from "../../data"; /** * @description 数据比对-成就系列数据 * @description 数据只有两种情况:新增、更新 * @since Alpha v0.1.4 * @returns {Promise} */ export async function checkAchievement (): Promise { const db = await Database.load("sqlite:tauri-genshin.db"); Object.values(TGAppData.achievements).map(async (item) => { // 检测是否存在 const selectRes: BTMuli.SQLite.Achievements[] = await db.select(`SELECT * FROM achievement WHERE id = ${item.id}`); if (!selectRes || selectRes.length === 0) { // 不存在则插入 const sql = `INSERT INTO Achievements (id, series, \`order\`, name, description, reward, version) VALUES (${item.id}, ${item.series}, ${item.order}, '${item.name}', '${item.description}', ${item.reward}, '${item.version}')`; await db.execute(sql); } else { // 比对两者数据 const selectItem = selectRes[0]; if (selectItem.name !== item.name || selectItem.description !== item.description || selectItem.reward !== item.reward) { // 更新 const sql = `UPDATE Achievements SET name = '${item.name}', description = '${item.description}', reward = ${item.reward}, version = '${item.version}' WHERE id = ${item.id}`; await db.execute(sql); } } }); await db.close(); } /** * @description 数据比对-成就系列数据 * @description 只有新增,更新靠触发器解决 * @since Alpha v0.1.4 * @returns {Promise} */ export async function checkAchievementSeries (): Promise { const db = await Database.load("sqlite:tauri-genshin.db"); Object.values(TGAppData.achievementSeries).map(async (item) => { // 检测是否存在 const selectRes: BTMuli.SQLite.AchievementSeries[] = await db.select(`SELECT * FROM achievement_series WHERE id = ${item.id}`); if (!selectRes || selectRes.length === 0) { // 不存在则插入 let sql; if (item.card) { sql = `INSERT INTO AchievementSeries (id, \`order\`, name, version, icon, nameCard) VALUES (${item.id}, ${item.order}, '${item.name}', '${item.version}', '${item.icon}', '${item.card}')`; } else { sql = `INSERT INTO AchievementSeries (id, \`order\`, name, version, icon) VALUES (${item.id}, ${item.order}, '${item.name}', '${item.version}', '${item.icon}')`; } await db.execute(sql); } }); await db.close(); }