mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-13 09:28:14 +08:00
🎨 根据实际情况修改
This commit is contained in:
@@ -12,7 +12,7 @@ import initDataSql from "./sql/initData";
|
|||||||
import initTableSql from "./sql/initTable";
|
import initTableSql from "./sql/initTable";
|
||||||
import { importUIAFData } from "./sql/updateData";
|
import { importUIAFData } from "./sql/updateData";
|
||||||
import { getUiafStatus } from "../../utils/UIAF";
|
import { getUiafStatus } from "../../utils/UIAF";
|
||||||
import { insertAppData, insertGameAccountData } from "./sql/insertData";
|
import { insertAbyssData, insertAppData, insertGameAccountData } from "./sql/insertData";
|
||||||
|
|
||||||
class Sqlite {
|
class Sqlite {
|
||||||
/**
|
/**
|
||||||
@@ -81,7 +81,7 @@ class Sqlite {
|
|||||||
* @param {TGApp.User.Account.Game[]} accounts
|
* @param {TGApp.User.Account.Game[]} accounts
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
public async insertAccount (accounts: TGApp.User.Account.Game[]): Promise<void> {
|
public async saveAccount (accounts: TGApp.User.Account.Game[]): Promise<void> {
|
||||||
const db = await Database.load(this.dbPath);
|
const db = await Database.load(this.dbPath);
|
||||||
for (const a of accounts) {
|
for (const a of accounts) {
|
||||||
const sql = insertGameAccountData(a);
|
const sql = insertGameAccountData(a);
|
||||||
@@ -297,6 +297,32 @@ class Sqlite {
|
|||||||
}
|
}
|
||||||
return achievements;
|
return achievements;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 保存深渊数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {TGApp.Game.Abyss.FullData} data 深渊数据
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
public async saveAbyss (data: TGApp.Game.Abyss.FullData): Promise<void> {
|
||||||
|
const db = await Database.load(this.dbPath);
|
||||||
|
const sql = insertAbyssData(data);
|
||||||
|
await db.execute(sql);
|
||||||
|
await db.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 获取深渊数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @returns {Promise<TGApp.Game.Abyss.FullData>}
|
||||||
|
*/
|
||||||
|
public async getAbyss (): Promise<TGApp.Sqlite.Abyss.SingleTable[]> {
|
||||||
|
const db = await Database.load(this.dbPath);
|
||||||
|
const sql = "SELECT * FROM SpiralAbyss";
|
||||||
|
const res: TGApp.Sqlite.Abyss.SingleTable[] = await db.select(sql);
|
||||||
|
await db.close();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const TGSqlite = new Sqlite();
|
const TGSqlite = new Sqlite();
|
||||||
|
|||||||
72
src/plugins/Sqlite/utils/transAbyssData.ts
Normal file
72
src/plugins/Sqlite/utils/transAbyssData.ts
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
/**
|
||||||
|
* @file plugins Sqlite utils transCharacter.ts
|
||||||
|
* @description Sqlite 数据转换
|
||||||
|
* @author BTMuli <bt-muli@outlook.com>
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { timeToSecond } from "./transTime";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 将通过 api 获取到的深渊数据转换为数据库中的数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {TGApp.Game.Abyss.CharacterData[]} data 深渊数据
|
||||||
|
* @returns {string} 转换后的深渊数据
|
||||||
|
*/
|
||||||
|
export function transCharacterData (data: TGApp.Game.Abyss.CharacterData[]): string {
|
||||||
|
const res = data.map((item) => {
|
||||||
|
return {
|
||||||
|
id: item.avatar_id,
|
||||||
|
value: item.value,
|
||||||
|
star: item.rarity,
|
||||||
|
};
|
||||||
|
}) as TGApp.Sqlite.Abyss.Character[];
|
||||||
|
console.log(JSON.stringify(res));
|
||||||
|
return JSON.stringify(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 将通过 api 获取到的深渊数据转换为数据库中的数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {TGApp.Game.Abyss.Floor} data 深渊数据
|
||||||
|
* @returns {string} 转换后的深渊数据
|
||||||
|
*/
|
||||||
|
export function transFloorData (data: TGApp.Game.Abyss.Floor[]): string {
|
||||||
|
const floor = data.map((item) => {
|
||||||
|
return {
|
||||||
|
id: item.index,
|
||||||
|
winStar: item.star,
|
||||||
|
maxStar: item.max_star,
|
||||||
|
isUnlock: item.is_unlock ? 1 : 0,
|
||||||
|
levels: item.levels.map((level) => {
|
||||||
|
return {
|
||||||
|
id: level.index,
|
||||||
|
winStar: level.star,
|
||||||
|
maxStar: level.max_star,
|
||||||
|
upBattle: transBattleData(level.battles.find((l) => l.index === 1) as TGApp.Game.Abyss.Battle),
|
||||||
|
downBattle: transBattleData(level.battles.find((l) => l.index === 2) as TGApp.Game.Abyss.Battle),
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
}) as TGApp.Sqlite.Abyss.Floor[];
|
||||||
|
return JSON.stringify(floor);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 将通过 api 获取到的深渊数据转换为数据库中的数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {TGApp.Game.Abyss.Battle} data 深渊数据
|
||||||
|
* @returns {TGApp.Sqlite.Abyss.Battle} 转换后的深渊数据
|
||||||
|
*/
|
||||||
|
function transBattleData (data: TGApp.Game.Abyss.Battle): TGApp.Sqlite.Abyss.Battle {
|
||||||
|
return {
|
||||||
|
time: timeToSecond(data.timestamp),
|
||||||
|
characters: data.avatars.map((item) => {
|
||||||
|
return {
|
||||||
|
id: item.id,
|
||||||
|
level: item.level,
|
||||||
|
star: item.rarity,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
}
|
||||||
23
src/plugins/Sqlite/utils/transTime.ts
Normal file
23
src/plugins/Sqlite/utils/transTime.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/**
|
||||||
|
* @file plugins Sqlite utils transTime.ts
|
||||||
|
* @description Sqlite 时间转换工具类
|
||||||
|
* @author BTMuli <bt-muli@outlook.com>
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 将时间戳转换为时间字符串
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {string} timestamp 时间戳 (秒)
|
||||||
|
* @returns {string} 时间字符串,格式为 YYYY-MM-DD HH:mm:ss
|
||||||
|
*/
|
||||||
|
export function timeToSecond (timestamp: string): string {
|
||||||
|
const date = new Date(Number(timestamp) * 1000);
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = date.getMonth() + 1;
|
||||||
|
const day = date.getDate();
|
||||||
|
const hour = String(date.getHours()).padStart(2, "0");
|
||||||
|
const minute = String(date.getMinutes()).padStart(2, "0");
|
||||||
|
const second = String(date.getSeconds()).padStart(2, "0");
|
||||||
|
return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
|
||||||
|
}
|
||||||
7
src/types/Sqlite/Abyss.d.ts
vendored
7
src/types/Sqlite/Abyss.d.ts
vendored
@@ -117,11 +117,14 @@ declare namespace TGApp.Sqlite.Abyss {
|
|||||||
* @description 数据库-深境螺旋表-角色数据
|
* @description 数据库-深境螺旋表-角色数据
|
||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.0
|
||||||
* @interface CharacterInfo
|
* @interface CharacterInfo
|
||||||
* @extends Character
|
* @property {number} id - 角色 ID
|
||||||
|
* @property {number} star - 星级
|
||||||
* @property {number} level - 等级
|
* @property {number} level - 等级
|
||||||
* @return CharacterInfo
|
* @return CharacterInfo
|
||||||
*/
|
*/
|
||||||
export interface CharacterInfo extends Character {
|
export interface CharacterInfo {
|
||||||
|
id: number
|
||||||
level: number
|
level: number
|
||||||
|
star: number
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user