mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-15 09:48:14 +08:00
✨ 完成 深渊数据 的备份与恢复
This commit is contained in:
@@ -14,6 +14,7 @@ import { importUIAFData } from "./sql/updateData";
|
||||
import { getUiafStatus } from "../../utils/UIAF";
|
||||
import {
|
||||
insertAbyssData,
|
||||
importAbyssData,
|
||||
insertAppData,
|
||||
insertGameAccountData,
|
||||
insertRecordData,
|
||||
@@ -338,14 +339,34 @@ class Sqlite {
|
||||
* @param {string} uid 游戏 UID
|
||||
* @returns {Promise<TGApp.Game.Abyss.FullData>}
|
||||
*/
|
||||
public async getAbyss (uid: string): Promise<TGApp.Sqlite.Abyss.SingleTable[]> {
|
||||
public async getAbyss (uid?: string): Promise<TGApp.Sqlite.Abyss.SingleTable[]> {
|
||||
const db = await Database.load(this.dbPath);
|
||||
const sql = `SELECT * FROM SpiralAbyss WHERE uid = '${uid}' order by id desc`;
|
||||
let sql;
|
||||
if (uid) {
|
||||
sql = `SELECT * FROM SpiralAbyss WHERE uid = '${uid}' order by id desc`;
|
||||
} else {
|
||||
sql = "SELECT * FROM SpiralAbyss order by uid, id desc";
|
||||
}
|
||||
const res: TGApp.Sqlite.Abyss.SingleTable[] = await db.select(sql);
|
||||
await db.close();
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 恢复深渊数据
|
||||
* @since Alpha v0.2.0
|
||||
* @param {TGApp.Sqlite.Abyss.SingleTable[]} data 深渊数据
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
public async restoreAbyss (data: TGApp.Sqlite.Abyss.SingleTable[]): Promise<void> {
|
||||
const db = await Database.load(this.dbPath);
|
||||
for (const item of data) {
|
||||
const sql = importAbyssData(item);
|
||||
await db.execute(sql);
|
||||
}
|
||||
await db.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 保存战绩数据
|
||||
* @since Alpha v0.2.0
|
||||
|
||||
@@ -176,6 +176,41 @@ export function insertAbyssData (uid: string, data: TGApp.Game.Abyss.FullData):
|
||||
`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 恢复深渊数据
|
||||
* @since Alpha v0.2.0
|
||||
* @param {TGApp.Sqlite.Abyss.SingleTable} data 深渊数据
|
||||
* @returns {string} sql
|
||||
*/
|
||||
export function importAbyssData (data: TGApp.Sqlite.Abyss.SingleTable): string {
|
||||
return `
|
||||
INSERT INTO SpiralAbyss (uid, id, startTime, endTime, totalBattleTimes, totalWinTimes,
|
||||
maxFloor, totalStar, isUnlock, revealRank, defeatRank, damageRank,
|
||||
takeDamageRank, normalSkillRank, energySkillRank, floors, updated)
|
||||
VALUES ('${data.uid}', ${data.id}, '${data.startTime}', '${data.endTime}', ${data.totalBattleTimes},
|
||||
${data.totalWinTimes}, '${data.maxFloor}', ${data.totalStar},
|
||||
${data.isUnlock}, '${data.revealRank}', '${data.defeatRank}', '${data.damageRank}',
|
||||
'${data.takeDamageRank}', '${data.normalSkillRank}', '${data.energySkillRank}', '${data.floors}',
|
||||
datetime('now', 'localtime'))
|
||||
ON CONFLICT(uid, id) DO UPDATE
|
||||
SET startTime = '${data.startTime}',
|
||||
endTime = '${data.endTime}',
|
||||
totalBattleTimes = ${data.totalBattleTimes},
|
||||
totalWinTimes = ${data.totalWinTimes},
|
||||
maxFloor = '${data.maxFloor}',
|
||||
totalStar = ${data.totalStar},
|
||||
isUnlock = ${data.isUnlock},
|
||||
revealRank = '${data.revealRank}',
|
||||
defeatRank = '${data.defeatRank}',
|
||||
damageRank = '${data.damageRank}',
|
||||
takeDamageRank = '${data.takeDamageRank}',
|
||||
normalSkillRank = '${data.normalSkillRank}',
|
||||
energySkillRank = '${data.energySkillRank}',
|
||||
floors = '${data.floors}',
|
||||
updated = datetime('now', 'localtime');
|
||||
`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 插入原神战绩数据
|
||||
* @since Alpha v0.2.0
|
||||
|
||||
Reference in New Issue
Block a user