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
|
* @file plugins/Sqlite/modules/userAbyss.ts
|
||||||
* @description Sqlite-用户深渊模块
|
* @description Sqlite-用户深渊模块
|
||||||
* @since Beta v0.6.1
|
* @since Beta v0.6.8
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import TGSqlite from "@Sqlite/index.js";
|
import TGSqlite from "@Sqlite/index.js";
|
||||||
@@ -14,11 +14,12 @@ import { timestampToDate } from "@/utils/toolFunc.js";
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 直接插入数据
|
* @description 直接插入数据
|
||||||
* @since Beta v0.6.0
|
* @since Beta v0.6.8
|
||||||
* @param {TGApp.Sqlite.Abyss.TableRaw} data - 数据
|
* @param {TGApp.Sqlite.Abyss.TableRaw} tableData - 数据
|
||||||
* @returns {string}
|
* @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());
|
const timeNow = timestampToDate(new Date().getTime());
|
||||||
return `
|
return `
|
||||||
INSERT INTO SpiralAbyss (uid, id, startTime, endTime, totalBattleTimes, totalWinTimes,
|
INSERT INTO SpiralAbyss (uid, id, startTime, endTime, totalBattleTimes, totalWinTimes,
|
||||||
@@ -28,23 +29,23 @@ function getRestoreSql(data: TGApp.Sqlite.Abyss.TableRaw): string {
|
|||||||
${data.totalWinTimes}, '${data.maxFloor}', ${data.totalStar},
|
${data.totalWinTimes}, '${data.maxFloor}', ${data.totalStar},
|
||||||
${data.isUnlock}, '${data.revealRank}', '${data.defeatRank}', '${data.damageRank}',
|
${data.isUnlock}, '${data.revealRank}', '${data.defeatRank}', '${data.damageRank}',
|
||||||
'${data.takeDamageRank}', '${data.normalSkillRank}', '${data.energySkillRank}', '${data.floors}',
|
'${data.takeDamageRank}', '${data.normalSkillRank}', '${data.energySkillRank}', '${data.floors}',
|
||||||
'${timeNow}')
|
'${timeNow}') ON CONFLICT(uid, id) DO
|
||||||
ON CONFLICT(uid, id) DO UPDATE
|
UPDATE
|
||||||
SET startTime = '${data.startTime}',
|
SET startTime = '${data.startTime}',
|
||||||
endTime = '${data.endTime}',
|
endTime = '${data.endTime}',
|
||||||
totalBattleTimes = ${data.totalBattleTimes},
|
totalBattleTimes = ${data.totalBattleTimes},
|
||||||
totalWinTimes = ${data.totalWinTimes},
|
totalWinTimes = ${data.totalWinTimes},
|
||||||
maxFloor = '${data.maxFloor}',
|
maxFloor = '${data.maxFloor}',
|
||||||
totalStar = ${data.totalStar},
|
totalStar = ${data.totalStar},
|
||||||
isUnlock = ${data.isUnlock},
|
isUnlock = ${data.isUnlock},
|
||||||
revealRank = '${data.revealRank}',
|
revealRank = '${data.revealRank}',
|
||||||
defeatRank = '${data.defeatRank}',
|
defeatRank = '${data.defeatRank}',
|
||||||
damageRank = '${data.damageRank}',
|
damageRank = '${data.damageRank}',
|
||||||
takeDamageRank = '${data.takeDamageRank}',
|
takeDamageRank = '${data.takeDamageRank}',
|
||||||
normalSkillRank = '${data.normalSkillRank}',
|
normalSkillRank = '${data.normalSkillRank}',
|
||||||
energySkillRank = '${data.energySkillRank}',
|
energySkillRank = '${data.energySkillRank}',
|
||||||
floors = '${data.floors}',
|
floors = '${data.floors}',
|
||||||
updated = '${timeNow}';
|
updated = '${timeNow}';
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,24 +76,24 @@ function getInsertSql(uid: string, data: TGApp.Game.Abyss.FullData): string {
|
|||||||
VALUES ('${uid}', ${data.schedule_id}, '${startTime}', '${endTime}', ${data.total_battle_times},
|
VALUES ('${uid}', ${data.schedule_id}, '${startTime}', '${endTime}', ${data.total_battle_times},
|
||||||
${data.total_win_times}, '${data.max_floor}', ${data.total_star}, ${isUnlock},
|
${data.total_win_times}, '${data.max_floor}', ${data.total_star}, ${isUnlock},
|
||||||
'${revealRank}', '${defeatRank}', '${damageRank}', '${takeDamageRank}', '${normalSkillRank}',
|
'${revealRank}', '${defeatRank}', '${damageRank}', '${takeDamageRank}', '${normalSkillRank}',
|
||||||
'${energySkillRank}', '${floors}', '${skippedFloor}', '${timeNow}')
|
'${energySkillRank}', '${floors}', '${skippedFloor}', '${timeNow}') ON CONFLICT(uid, id) DO
|
||||||
ON CONFLICT(uid, id) DO UPDATE
|
UPDATE
|
||||||
SET startTime = '${startTime}',
|
SET startTime = '${startTime}',
|
||||||
endTime = '${endTime}',
|
endTime = '${endTime}',
|
||||||
totalBattleTimes = ${data.total_battle_times},
|
totalBattleTimes = ${data.total_battle_times},
|
||||||
totalWinTimes = ${data.total_win_times},
|
totalWinTimes = ${data.total_win_times},
|
||||||
maxFloor = '${data.max_floor}',
|
maxFloor = '${data.max_floor}',
|
||||||
totalStar = ${data.total_star},
|
totalStar = ${data.total_star},
|
||||||
isUnlock = ${isUnlock},
|
isUnlock = ${isUnlock},
|
||||||
revealRank = '${revealRank}',
|
revealRank = '${revealRank}',
|
||||||
defeatRank = '${defeatRank}',
|
defeatRank = '${defeatRank}',
|
||||||
damageRank = '${damageRank}',
|
damageRank = '${damageRank}',
|
||||||
takeDamageRank = '${takeDamageRank}',
|
takeDamageRank = '${takeDamageRank}',
|
||||||
normalSkillRank = '${normalSkillRank}',
|
normalSkillRank = '${normalSkillRank}',
|
||||||
energySkillRank = '${energySkillRank}',
|
energySkillRank = '${energySkillRank}',
|
||||||
floors = '${floors}',
|
floors = '${floors}',
|
||||||
skippedFloor = '${skippedFloor}',
|
skippedFloor = '${skippedFloor}',
|
||||||
updated = '${timeNow}';
|
updated = '${timeNow}';
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
|
* @description 获取所有有数据的UID
|
||||||
* @since Beta v0.6.0
|
* @since Beta v0.6.0
|
||||||
@@ -199,7 +229,7 @@ async function backupAbyss(dir: string): Promise<void> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 恢复深渊数据
|
* @description 恢复深渊数据
|
||||||
* @since Beta v0.6.0
|
* @since Beta v0.6.8
|
||||||
* @param {string} dir - 备份文件目录
|
* @param {string} dir - 备份文件目录
|
||||||
* @returns {Promise<boolean>}
|
* @returns {Promise<boolean>}
|
||||||
*/
|
*/
|
||||||
@@ -207,7 +237,7 @@ async function restoreAbyss(dir: string): Promise<boolean> {
|
|||||||
const filePath = `${dir}${path.sep()}abyss.json`;
|
const filePath = `${dir}${path.sep()}abyss.json`;
|
||||||
if (!(await exists(filePath))) return false;
|
if (!(await exists(filePath))) return false;
|
||||||
try {
|
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();
|
const db = await TGSqlite.getDB();
|
||||||
for (const abyss of data) {
|
for (const abyss of data) {
|
||||||
await db.execute(getRestoreSql(abyss));
|
await db.execute(getRestoreSql(abyss));
|
||||||
|
|||||||
Reference in New Issue
Block a user