mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-12 09:18:14 +08:00
🐛 修复深渊数据恢复异常
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @file plugins/Sqlite/modules/userAbyss.ts
|
||||
* @description Sqlite-用户深渊模块
|
||||
* @since Beta v0.6.1
|
||||
* @since Beta v0.6.8
|
||||
*/
|
||||
|
||||
import TGSqlite from "@Sqlite/index.js";
|
||||
@@ -14,11 +14,12 @@ import { timestampToDate } from "@/utils/toolFunc.js";
|
||||
|
||||
/**
|
||||
* @description 直接插入数据
|
||||
* @since Beta v0.6.0
|
||||
* @param {TGApp.Sqlite.Abyss.TableRaw} data - 数据
|
||||
* @since Beta v0.6.8
|
||||
* @param {TGApp.Sqlite.Abyss.TableRaw} tableData - 数据
|
||||
* @returns {string}
|
||||
*/
|
||||
function getRestoreSql(data: TGApp.Sqlite.Abyss.TableRaw): string {
|
||||
function getRestoreSql(tableData: TGApp.Sqlite.Abyss.TableData): string {
|
||||
const data = data2Raw(tableData);
|
||||
const timeNow = timestampToDate(new Date().getTime());
|
||||
return `
|
||||
INSERT INTO SpiralAbyss (uid, id, startTime, endTime, totalBattleTimes, totalWinTimes,
|
||||
@@ -28,8 +29,8 @@ function getRestoreSql(data: TGApp.Sqlite.Abyss.TableRaw): string {
|
||||
${data.totalWinTimes}, '${data.maxFloor}', ${data.totalStar},
|
||||
${data.isUnlock}, '${data.revealRank}', '${data.defeatRank}', '${data.damageRank}',
|
||||
'${data.takeDamageRank}', '${data.normalSkillRank}', '${data.energySkillRank}', '${data.floors}',
|
||||
'${timeNow}')
|
||||
ON CONFLICT(uid, id) DO UPDATE
|
||||
'${timeNow}') ON CONFLICT(uid, id) DO
|
||||
UPDATE
|
||||
SET startTime = '${data.startTime}',
|
||||
endTime = '${data.endTime}',
|
||||
totalBattleTimes = ${data.totalBattleTimes},
|
||||
@@ -75,8 +76,8 @@ function getInsertSql(uid: string, data: TGApp.Game.Abyss.FullData): string {
|
||||
VALUES ('${uid}', ${data.schedule_id}, '${startTime}', '${endTime}', ${data.total_battle_times},
|
||||
${data.total_win_times}, '${data.max_floor}', ${data.total_star}, ${isUnlock},
|
||||
'${revealRank}', '${defeatRank}', '${damageRank}', '${takeDamageRank}', '${normalSkillRank}',
|
||||
'${energySkillRank}', '${floors}', '${skippedFloor}', '${timeNow}')
|
||||
ON CONFLICT(uid, id) DO UPDATE
|
||||
'${energySkillRank}', '${floors}', '${skippedFloor}', '${timeNow}') ON CONFLICT(uid, id) DO
|
||||
UPDATE
|
||||
SET startTime = '${startTime}',
|
||||
endTime = '${endTime}',
|
||||
totalBattleTimes = ${data.total_battle_times},
|
||||
@@ -125,6 +126,35 @@ function raw2Data(data: TGApp.Sqlite.Abyss.TableRaw): TGApp.Sqlite.Abyss.TableDa
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @description data数据转table数据
|
||||
* @since Beta v0.6.8
|
||||
* @param {TGApp.Sqlite.Abyss.TableData} data - 原始数据
|
||||
* @returns {TGApp.Sqlite.Abyss.TableRaw}
|
||||
*/
|
||||
function data2Raw(data: TGApp.Sqlite.Abyss.TableData): TGApp.Sqlite.Abyss.TableRaw {
|
||||
return {
|
||||
uid: data.uid,
|
||||
id: data.id,
|
||||
startTime: data.startTime,
|
||||
endTime: data.endTime,
|
||||
totalBattleTimes: data.totalBattleTimes,
|
||||
totalWinTimes: data.totalWinTimes,
|
||||
maxFloor: data.maxFloor,
|
||||
totalStar: data.totalStar,
|
||||
isUnlock: data.isUnlock,
|
||||
revealRank: JSON.stringify(data.revealRank),
|
||||
defeatRank: JSON.stringify(data.defeatRank),
|
||||
damageRank: JSON.stringify(data.damageRank),
|
||||
takeDamageRank: JSON.stringify(data.takeDamageRank),
|
||||
normalSkillRank: JSON.stringify(data.normalSkillRank),
|
||||
energySkillRank: JSON.stringify(data.energySkillRank),
|
||||
floors: JSON.stringify(data.floors),
|
||||
skippedFloor: data.skippedFloor,
|
||||
updated: data.updated,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取所有有数据的UID
|
||||
* @since Beta v0.6.0
|
||||
@@ -199,7 +229,7 @@ async function backupAbyss(dir: string): Promise<void> {
|
||||
|
||||
/**
|
||||
* @description 恢复深渊数据
|
||||
* @since Beta v0.6.0
|
||||
* @since Beta v0.6.8
|
||||
* @param {string} dir - 备份文件目录
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@@ -207,7 +237,7 @@ async function restoreAbyss(dir: string): Promise<boolean> {
|
||||
const filePath = `${dir}${path.sep()}abyss.json`;
|
||||
if (!(await exists(filePath))) return false;
|
||||
try {
|
||||
const data: TGApp.Sqlite.Abyss.TableRaw[] = JSON.parse(await readTextFile(filePath));
|
||||
const data: TGApp.Sqlite.Abyss.TableData[] = JSON.parse(await readTextFile(filePath));
|
||||
const db = await TGSqlite.getDB();
|
||||
for (const abyss of data) {
|
||||
await db.execute(getRestoreSql(abyss));
|
||||
|
||||
Reference in New Issue
Block a user