mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-14 09:38:13 +08:00
✨ 添加 AppCharacter 表
This commit is contained in:
@@ -29,6 +29,7 @@ class Sqlite {
|
|||||||
private readonly tables: string[] = [
|
private readonly tables: string[] = [
|
||||||
"Achievements",
|
"Achievements",
|
||||||
"AchievementSeries",
|
"AchievementSeries",
|
||||||
|
"AppCharacters",
|
||||||
"AppData",
|
"AppData",
|
||||||
"GameAccount",
|
"GameAccount",
|
||||||
"NameCard",
|
"NameCard",
|
||||||
@@ -187,7 +188,9 @@ class Sqlite {
|
|||||||
*/
|
*/
|
||||||
public async getNameCard (seriesId: number): Promise<TGApp.Sqlite.NameCard.Item> {
|
public async getNameCard (seriesId: number): Promise<TGApp.Sqlite.NameCard.Item> {
|
||||||
const db = await Database.load(this.dbPath);
|
const db = await Database.load(this.dbPath);
|
||||||
const sql = `SELECT * FROM NameCard WHERE name = (SELECT nameCard FROM AchievementSeries WHERE id = ${seriesId});`;
|
const sql = `SELECT *
|
||||||
|
FROM NameCard
|
||||||
|
WHERE name = (SELECT nameCard FROM AchievementSeries WHERE id = ${seriesId});`;
|
||||||
const res: TGApp.Sqlite.NameCard.Item[] = await db.select(sql);
|
const res: TGApp.Sqlite.NameCard.Item[] = await db.select(sql);
|
||||||
await db.close();
|
await db.close();
|
||||||
return res[0];
|
return res[0];
|
||||||
@@ -203,7 +206,10 @@ class Sqlite {
|
|||||||
const db = await Database.load(this.dbPath);
|
const db = await Database.load(this.dbPath);
|
||||||
let sql;
|
let sql;
|
||||||
if (seriesId) {
|
if (seriesId) {
|
||||||
sql = `SELECT * FROM Achievements WHERE series=${seriesId} ORDER BY isCompleted, \`order\`;`;
|
sql = `SELECT *
|
||||||
|
FROM Achievements
|
||||||
|
WHERE series = ${seriesId}
|
||||||
|
ORDER BY isCompleted, \`order\`;`;
|
||||||
} else {
|
} else {
|
||||||
sql = "SELECT * FROM Achievements ORDER BY isCompleted, `order`;";
|
sql = "SELECT * FROM Achievements ORDER BY isCompleted, `order`;";
|
||||||
}
|
}
|
||||||
@@ -249,9 +255,15 @@ class Sqlite {
|
|||||||
let sql;
|
let sql;
|
||||||
if (keyword.startsWith("v")) {
|
if (keyword.startsWith("v")) {
|
||||||
const version = keyword.replace("v", "");
|
const version = keyword.replace("v", "");
|
||||||
sql = `SELECT * FROM Achievements WHERE version LIKE '%${version}%' ORDER BY isCompleted, \`order\`;`;
|
sql = `SELECT *
|
||||||
|
FROM Achievements
|
||||||
|
WHERE version LIKE '%${version}%'
|
||||||
|
ORDER BY isCompleted, \`order\`;`;
|
||||||
} else {
|
} else {
|
||||||
sql = `SELECT * FROM Achievements WHERE name LIKE '%${keyword}%' OR description LIKE '%${keyword}%'
|
sql = `SELECT *
|
||||||
|
FROM Achievements
|
||||||
|
WHERE name LIKE '%${keyword}%'
|
||||||
|
OR description LIKE '%${keyword}%'
|
||||||
ORDER BY isCompleted, \`order\`;`;
|
ORDER BY isCompleted, \`order\`;`;
|
||||||
}
|
}
|
||||||
const res: TGApp.Sqlite.Achievement.SingleTable[] = await db.select(sql);
|
const res: TGApp.Sqlite.Achievement.SingleTable[] = await db.select(sql);
|
||||||
@@ -318,11 +330,25 @@ class Sqlite {
|
|||||||
*/
|
*/
|
||||||
public async getAbyss (): Promise<TGApp.Sqlite.Abyss.SingleTable[]> {
|
public async getAbyss (): Promise<TGApp.Sqlite.Abyss.SingleTable[]> {
|
||||||
const db = await Database.load(this.dbPath);
|
const db = await Database.load(this.dbPath);
|
||||||
const sql = "SELECT * FROM SpiralAbyss";
|
const sql = "SELECT * FROM SpiralAbyss order by id desc";
|
||||||
const res: TGApp.Sqlite.Abyss.SingleTable[] = await db.select(sql);
|
const res: TGApp.Sqlite.Abyss.SingleTable[] = await db.select(sql);
|
||||||
await db.close();
|
await db.close();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 获取角色数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {number} id 角色 ID
|
||||||
|
* @returns {Promise<TGApp.Sqlite.Character.AppData}> 角色数据
|
||||||
|
*/
|
||||||
|
public async getAppCharacter (id: number): Promise<TGApp.Sqlite.Character.AppData> {
|
||||||
|
const db = await Database.load(this.dbPath);
|
||||||
|
const sql = `SELECT * FROM AppCharacters WHERE id = ${id}`;
|
||||||
|
const res: TGApp.Sqlite.Character.AppData[] = await db.select(sql);
|
||||||
|
await db.close();
|
||||||
|
return res[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const TGSqlite = new Sqlite();
|
const TGSqlite = new Sqlite();
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ create table if not exists AppCharacters
|
|||||||
star integer,
|
star integer,
|
||||||
element text,
|
element text,
|
||||||
weapon text,
|
weapon text,
|
||||||
nameCard text default '无'
|
nameCard text,
|
||||||
|
updated text
|
||||||
);
|
);
|
||||||
|
|
||||||
-- @brief 创建应用数据表
|
-- @brief 创建应用数据表
|
||||||
|
|||||||
@@ -9,11 +9,17 @@
|
|||||||
import { app } from "@tauri-apps/api";
|
import { app } from "@tauri-apps/api";
|
||||||
// utils
|
// utils
|
||||||
import { getBuildTime } from "../../../utils/TGBuild";
|
import { getBuildTime } from "../../../utils/TGBuild";
|
||||||
import { insertAchievementData, insertAchievementSeriesData, insertNameCardData } from "./insertData";
|
import {
|
||||||
|
insertAchievementData,
|
||||||
|
insertAchievementSeriesData,
|
||||||
|
insertNameCardData,
|
||||||
|
insertCharacterData,
|
||||||
|
} from "./insertData";
|
||||||
import {
|
import {
|
||||||
AppAchievementsData,
|
AppAchievementsData,
|
||||||
AppAchievementSeriesData,
|
AppAchievementSeriesData,
|
||||||
AppNameCardsData,
|
AppNameCardsData,
|
||||||
|
AppCharacterData,
|
||||||
} from "../../../data";
|
} from "../../../data";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,6 +79,15 @@ function initNameCardData (): string[] {
|
|||||||
return AppNameCardsData.map((item) => insertNameCardData(item));
|
return AppNameCardsData.map((item) => insertNameCardData(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 初始化角色数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @returns {string[]} sql
|
||||||
|
*/
|
||||||
|
function initCharacterData (): string[] {
|
||||||
|
return AppCharacterData.map((item) => insertCharacterData(item));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 初始化数据
|
* @description 初始化数据
|
||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.0
|
||||||
@@ -84,6 +99,7 @@ async function initDataSql (): Promise<string[]> {
|
|||||||
sqlRes.push(...initAchievementSeriesData());
|
sqlRes.push(...initAchievementSeriesData());
|
||||||
sqlRes.push(...initAchievementData());
|
sqlRes.push(...initAchievementData());
|
||||||
sqlRes.push(...initNameCardData());
|
sqlRes.push(...initNameCardData());
|
||||||
|
sqlRes.push(...initCharacterData());
|
||||||
return sqlRes;
|
return sqlRes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,17 @@
|
|||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// utils
|
||||||
|
import { timeToSecond } from "../utils/transTime";
|
||||||
|
import { transCharacterData, transFloorData } from "../utils/transAbyssData";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 插入成就数据
|
* @description 插入成就数据
|
||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.0
|
||||||
* @param {TGApp.App.Achievement.Item} data 成就数据
|
* @param {TGApp.App.Achievement.Item} data 成就数据
|
||||||
* @returns {string} sql
|
* @returns {string} sql
|
||||||
*/
|
*/
|
||||||
export function insertAchievementData (data: TGApp.App.Achievement.Item): string {
|
export function insertAchievementData(data: TGApp.App.Achievement.Item): string {
|
||||||
return `
|
return `
|
||||||
INSERT INTO Achievements (id, series, "order", name, description, reward, completedTime, version, updated)
|
INSERT INTO Achievements (id, series, "order", name, description, reward, completedTime, version, updated)
|
||||||
VALUES (${data.id}, ${data.series}, ${data.order}, '${data.name}', '${data.description}', ${data.reward}, '',
|
VALUES (${data.id}, ${data.series}, ${data.order}, '${data.name}', '${data.description}', ${data.reward}, '',
|
||||||
@@ -33,16 +37,17 @@ export function insertAchievementData (data: TGApp.App.Achievement.Item): string
|
|||||||
* @param {TGApp.App.Achievement.Series} data 成就系列数据
|
* @param {TGApp.App.Achievement.Series} data 成就系列数据
|
||||||
* @returns {string} sql
|
* @returns {string} sql
|
||||||
*/
|
*/
|
||||||
export function insertAchievementSeriesData (data: TGApp.App.Achievement.Series): string {
|
export function insertAchievementSeriesData(data: TGApp.App.Achievement.Series): string {
|
||||||
return `
|
return `
|
||||||
INSERT INTO AchievementSeries (id, "order", name, version, nameCard, updated)
|
INSERT INTO AchievementSeries (id, "order", name, version, nameCard, updated)
|
||||||
VALUES (${data.id}, ${data.order}, '${data.name}', '${data.version}','${data.card}', datetime('now', 'localtime'))
|
VALUES (${data.id}, ${data.order}, '${data.name}', '${data.version}', '${data.card}',
|
||||||
|
datetime('now', 'localtime'))
|
||||||
ON CONFLICT(id) DO UPDATE
|
ON CONFLICT(id) DO UPDATE
|
||||||
SET name = '${data.name}',
|
SET name = '${data.name}',
|
||||||
"order" = ${data.order},
|
"order" = ${data.order},
|
||||||
version = '${data.version}',
|
version = '${data.version}',
|
||||||
nameCard = '${data.card}',
|
nameCard = '${data.card}',
|
||||||
updated = datetime('now', 'localtime');
|
updated = datetime('now', 'localtime');
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,11 +58,12 @@ export function insertAchievementSeriesData (data: TGApp.App.Achievement.Series)
|
|||||||
* @param {string} value 值
|
* @param {string} value 值
|
||||||
* @returns {string} sql
|
* @returns {string} sql
|
||||||
*/
|
*/
|
||||||
export function insertAppData (key: string, value: string): string {
|
export function insertAppData(key: string, value: string): string {
|
||||||
return `
|
return `
|
||||||
INSERT INTO AppData (key, value, updated)
|
INSERT INTO AppData (key, value, updated)
|
||||||
VALUES ('${key}', '${value}', datetime('now', 'localtime'))
|
VALUES ('${key}', '${value}', datetime('now', 'localtime'))
|
||||||
ON CONFLICT(key) DO UPDATE SET value = '${value}', updated = datetime('now', 'localtime');
|
ON CONFLICT(key) DO UPDATE SET value = '${value}',
|
||||||
|
updated = datetime('now', 'localtime');
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +73,7 @@ export function insertAppData (key: string, value: string): string {
|
|||||||
* @param {TGApp.User.Account.Game} data 游戏账号数据
|
* @param {TGApp.User.Account.Game} data 游戏账号数据
|
||||||
* @returns {string} sql
|
* @returns {string} sql
|
||||||
*/
|
*/
|
||||||
export function insertGameAccountData (data: TGApp.User.Account.Game): string {
|
export function insertGameAccountData(data: TGApp.User.Account.Game): string {
|
||||||
const isChosen = data.is_chosen ? 1 : 0;
|
const isChosen = data.is_chosen ? 1 : 0;
|
||||||
const isOfficial = data.is_official ? 1 : 0;
|
const isOfficial = data.is_official ? 1 : 0;
|
||||||
return `
|
return `
|
||||||
@@ -91,7 +97,7 @@ export function insertGameAccountData (data: TGApp.User.Account.Game): string {
|
|||||||
* @param {TGApp.App.NameCard.Item} data 名片数据
|
* @param {TGApp.App.NameCard.Item} data 名片数据
|
||||||
* @returns {string} sql
|
* @returns {string} sql
|
||||||
*/
|
*/
|
||||||
export function insertNameCardData (data: TGApp.App.NameCard.Item): string {
|
export function insertNameCardData(data: TGApp.App.NameCard.Item): string {
|
||||||
return `
|
return `
|
||||||
INSERT INTO NameCard (name, "desc", type, source, updated)
|
INSERT INTO NameCard (name, "desc", type, source, updated)
|
||||||
VALUES ('${data.name}', '${data.desc}', '${data.type}', '${data.source}', datetime('now', 'localtime'))
|
VALUES ('${data.name}', '${data.desc}', '${data.type}', '${data.source}', datetime('now', 'localtime'))
|
||||||
@@ -101,3 +107,68 @@ export function insertNameCardData (data: TGApp.App.NameCard.Item): string {
|
|||||||
updated = datetime('now', 'localtime');
|
updated = datetime('now', 'localtime');
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 插入角色数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {TGApp.User.Character.Item} data 角色数据
|
||||||
|
* @returns {string} sql
|
||||||
|
*/
|
||||||
|
export function insertCharacterData(data: TGApp.App.Character.WikiBriefInfo): string {
|
||||||
|
return `
|
||||||
|
INSERT INTO AppCharacters (id, name, star, element, weapon, nameCard, birthday, updated)
|
||||||
|
VALUES (${data.id}, '${data.name}', ${data.star}, '${data.element}', '${data.weapon}',
|
||||||
|
'${data.nameCard}', '${data.birthday}', datetime('now', 'localtime'))
|
||||||
|
ON CONFLICT(id) DO UPDATE
|
||||||
|
SET name = '${data.name}',
|
||||||
|
star = ${data.star},
|
||||||
|
element = '${data.element}',
|
||||||
|
weapon = '${data.weapon}',
|
||||||
|
nameCard = '${data.nameCard}',
|
||||||
|
birthday = '${data.birthday}';
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 插入深渊数据
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @param {TGApp.User.Abyss} data 深渊数据
|
||||||
|
* @returns {string} sql
|
||||||
|
*/
|
||||||
|
export function insertAbyssData(data: TGApp.Game.Abyss.FullData): string {
|
||||||
|
const startTime = timeToSecond(data.start_time);
|
||||||
|
const endTime = timeToSecond(data.end_time);
|
||||||
|
const isUnlock = data.is_unlock ? 1 : 0;
|
||||||
|
const revealRank = transCharacterData(data.reveal_rank);
|
||||||
|
const defeatRank = transCharacterData(data.defeat_rank);
|
||||||
|
const damageRank = transCharacterData(data.damage_rank);
|
||||||
|
const takeDamageRank = transCharacterData(data.take_damage_rank);
|
||||||
|
const normalSkillRank = transCharacterData(data.normal_skill_rank);
|
||||||
|
const energySkillRank = transCharacterData(data.energy_skill_rank);
|
||||||
|
const floors = transFloorData(data.floors);
|
||||||
|
return `
|
||||||
|
INSERT INTO SpiralAbyss (id, startTime, endTime, totalBattleTimes, totalWinTimes, maxFloor, totalStar, isUnlock,
|
||||||
|
revealRank, defeatRank, damageRank, takeDamageRank, normalSkillRank, energySkillRank,
|
||||||
|
floors, updated)
|
||||||
|
VALUES (${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}', datetime('now', 'localtime'))
|
||||||
|
ON CONFLICT(id) DO UPDATE
|
||||||
|
SET startTime = '${startTime}',
|
||||||
|
endTime = '${endTime}',
|
||||||
|
totalBattleTimes = ${data.total_battle_times},
|
||||||
|
totalWinTimes = ${data.total_win_times},
|
||||||
|
maxFloor = '${data.max_floor}',
|
||||||
|
totalStar = ${data.total_star},
|
||||||
|
isUnlock = ${isUnlock},
|
||||||
|
revealRank = '${revealRank}',
|
||||||
|
defeatRank = '${defeatRank}',
|
||||||
|
damageRank = '${damageRank}',
|
||||||
|
takeDamageRank = '${takeDamageRank}',
|
||||||
|
normalSkillRank = '${normalSkillRank}',
|
||||||
|
energySkillRank = '${energySkillRank}',
|
||||||
|
floors = '${floors}',
|
||||||
|
updated = datetime('now', 'localtime');
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|||||||
35
src/types/Sqlite/Character.d.ts
vendored
Normal file
35
src/types/Sqlite/Character.d.ts
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* @file types Sqlite Character.d.ts
|
||||||
|
* @description 角色相关类型定义文件
|
||||||
|
* @author BTMuli <bt-muli@outlook.com>
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare namespace TGApp.Sqlite.Character {
|
||||||
|
/**
|
||||||
|
* @description 应用数据库中的角色类型
|
||||||
|
* @since Alpha v0.2.0
|
||||||
|
* @interface AppData
|
||||||
|
* @property {number} id - 角色 ID
|
||||||
|
* @property {string} name - 角色名称
|
||||||
|
* @property {string} title - 角色称号
|
||||||
|
* @property {string} birthday - 角色生日
|
||||||
|
* @property {number} star - 角色星级
|
||||||
|
* @property {string} element - 角色元素类型
|
||||||
|
* @property {string} weapon - 角色武器类型
|
||||||
|
* @property {string} nameCard - 角色名片
|
||||||
|
* @property {string} updated - 数据更新时间
|
||||||
|
* @return AppData
|
||||||
|
*/
|
||||||
|
export interface AppData {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
title: string
|
||||||
|
birthday: string
|
||||||
|
star: number
|
||||||
|
element: string
|
||||||
|
weapon: string
|
||||||
|
nameCard: string
|
||||||
|
updated: string
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user