mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-12 09:18:14 +08:00
🎨 fix(db): 调整结构,将名片数据也写到数据库里
This commit is contained in:
@@ -9,29 +9,6 @@ import { app } from "@tauri-apps/api";
|
||||
import { getBuildTime } from "./TGBuild";
|
||||
import { TGAppData } from "../data";
|
||||
|
||||
const TGSql = {
|
||||
initTable: {
|
||||
all: initSQLiteTable(),
|
||||
app: initAppTable(),
|
||||
achievement: initAchievementTable(),
|
||||
achievementSeries: initAchievementSeriesTable(),
|
||||
},
|
||||
initData: {
|
||||
all: initSQLiteData(),
|
||||
app: initAppData(),
|
||||
achievement: initAchievementData(),
|
||||
achievementSeries: initAchievementSeriesData(),
|
||||
},
|
||||
insert: {
|
||||
achievement: insertAchievementData,
|
||||
achievementSeries: insertAchievementSeriesData,
|
||||
UIAF: importUIAFData,
|
||||
},
|
||||
update: {
|
||||
achievement: updateAchievementData,
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* @description 初始化应用数据表
|
||||
* @since Alpha v0.1.4
|
||||
@@ -79,7 +56,7 @@ function initAchievementSeriesTable (): string[] {
|
||||
totalCount INTEGER DEFAULT 0,
|
||||
finCount INTEGER DEFAULT 0,
|
||||
icon TEXT NOT NULL,
|
||||
nameCard TEXT DEFAULT NULL,
|
||||
nameCard TEXT NOT NULL,
|
||||
updated TEXT DEFAULT NULL
|
||||
);
|
||||
`);
|
||||
@@ -133,16 +110,42 @@ function initAchievementTable (): string[] {
|
||||
`);
|
||||
return sqlRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 初始化名片数据表
|
||||
* @since Alpha v0.1.4
|
||||
* @returns {string[]} sql
|
||||
*/
|
||||
function initNameCardTable (): string[] {
|
||||
const sqlRes = [];
|
||||
// 创建名片数据表
|
||||
sqlRes.push(`
|
||||
CREATE TABLE IF NOT EXISTS NameCard
|
||||
(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT DEFAULT NULL,
|
||||
description TEXT DEFAULT NULL,
|
||||
icon TEXT NOT NULL,
|
||||
bg TEXT NOT NULL,
|
||||
profile TEXT NOT NULL,
|
||||
type INTEGER DEFAULT 0,
|
||||
source TEXT DEFAULT NULL,
|
||||
updated TEXT DEFAULT NULL
|
||||
);
|
||||
`);
|
||||
return sqlRes;
|
||||
}
|
||||
/**
|
||||
* @description 初始化数据库表
|
||||
* @since Alpha v0.1.4
|
||||
* @returns {string[]} sql
|
||||
*/
|
||||
function initSQLiteTable (): string[] {
|
||||
export function initSQLiteTable (): string[] {
|
||||
const sqlRes = [];
|
||||
sqlRes.push(...initAppTable());
|
||||
sqlRes.push(...initAchievementSeriesTable());
|
||||
sqlRes.push(...initAchievementTable());
|
||||
sqlRes.push(...initNameCardTable());
|
||||
return sqlRes;
|
||||
}
|
||||
|
||||
@@ -177,8 +180,11 @@ async function initAppData (): Promise<string[]> {
|
||||
function initAchievementSeriesData (): string[] {
|
||||
const sqlRes: string[] = [];
|
||||
const oriData = TGAppData.achievementSeries;
|
||||
Object.values(oriData).map((series) => {
|
||||
const sql = insertAchievementSeriesData(series);
|
||||
oriData.map((data) => {
|
||||
const sql = `
|
||||
INSERT INTO AchievementSeries (id, "order", name, version, icon, nameCard, updated)
|
||||
VALUES (${data.id}, ${data.order}, '${data.name}', '${data.version}', '${data.icon}', '${data.card}', datetime('now', 'localtime'));
|
||||
`;
|
||||
return sqlRes.push(sql);
|
||||
});
|
||||
return sqlRes;
|
||||
@@ -192,8 +198,29 @@ function initAchievementSeriesData (): string[] {
|
||||
function initAchievementData (): string[] {
|
||||
const sqlRes: string[] = [];
|
||||
const oriData = TGAppData.achievements;
|
||||
Object.values(oriData).map((achievement) => {
|
||||
const sql = insertAchievementData(achievement);
|
||||
oriData.map((data) => {
|
||||
const sql = `
|
||||
INSERT INTO Achievements (id, series, "order", name, description, reward, version, updated)
|
||||
VALUES (${data.id}, ${data.series}, ${data.order}, '${data.name}', '${data.description}', ${data.reward}, '${data.version}', datetime('now', 'localtime'));
|
||||
`;
|
||||
return sqlRes.push(sql);
|
||||
});
|
||||
return sqlRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 初始化名片数据
|
||||
* @since Alpha v0.1.4
|
||||
* @returns {string[]} sql
|
||||
*/
|
||||
function initNameCardData (): string[] {
|
||||
const sqlRes: string[] = [];
|
||||
const oriData = TGAppData.nameCards;
|
||||
oriData.map((data) => {
|
||||
const sql = `
|
||||
INSERT INTO NameCard (name, description, icon, bg, profile, type, source, updated)
|
||||
VALUES ('${data.name}', '${data.description}', '${data.icon}', '${data.bg}', '${data.profile}', ${data.type}, '${data.source}', datetime('now', 'localtime'));
|
||||
`;
|
||||
return sqlRes.push(sql);
|
||||
});
|
||||
return sqlRes;
|
||||
@@ -204,82 +231,22 @@ function initAchievementData (): string[] {
|
||||
* @since Alpha v0.1.4
|
||||
* @returns {Promise<string[]>} sql
|
||||
*/
|
||||
async function initSQLiteData (): Promise<string[]> {
|
||||
export async function initSQLiteData (): Promise<string[]> {
|
||||
const sqlRes = [];
|
||||
sqlRes.push(...initAchievementSeriesData());
|
||||
sqlRes.push(...initAchievementData());
|
||||
sqlRes.push(...initNameCardData());
|
||||
sqlRes.push(...await initAppData());
|
||||
return sqlRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 插入数据-成就系列
|
||||
* @since Alpha v0.1.4
|
||||
* @param {BTMuli.Genshin.AchievementSeries} data
|
||||
* @returns {string} sql
|
||||
*/
|
||||
function insertAchievementSeriesData (data: BTMuli.Genshin.AchievementSeries): string {
|
||||
let sql;
|
||||
if (data.card) {
|
||||
sql = `
|
||||
INSERT INTO AchievementSeries (id, "order", name, version, icon, nameCard, updated)
|
||||
VALUES (${data.id}, ${data.order}, '${data.name}', '${data.version}', '${data.icon}', '${data.card}', datetime('now', 'localtime'));
|
||||
`;
|
||||
} else {
|
||||
sql = `
|
||||
INSERT INTO AchievementSeries (id, "order", name, version, icon, updated)
|
||||
VALUES (${data.id}, ${data.order}, '${data.name}', '${data.version}', '${data.icon}', datetime('now', 'localtime'));
|
||||
`;
|
||||
}
|
||||
return sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 插入数据-成就
|
||||
* @since Alpha v0.1.4
|
||||
* @param {BTMuli.Genshin.Achievement} data
|
||||
* @returns {string} sql
|
||||
*/
|
||||
function insertAchievementData (data: BTMuli.Genshin.Achievement): string {
|
||||
const sql = `
|
||||
INSERT INTO Achievements (id, series, "order", name, description, reward, version, updated)
|
||||
VALUES (${data.id}, ${data.series}, ${data.order}, '${data.name}', '${data.description}', ${data.reward}, '${data.version}', datetime('now', 'localtime'));
|
||||
`;
|
||||
return sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 更新数据-成就
|
||||
* @since Alpha v0.1.4
|
||||
* @param {BTMuli.Genshin.Achievement} data
|
||||
* @returns {string} sql
|
||||
*/
|
||||
function updateAchievementData (data: BTMuli.Genshin.Achievement): string {
|
||||
let sql;
|
||||
const isCompleted = data.completed ? 1 : 0;
|
||||
if (data.completed && data.completed_time) {
|
||||
sql = `
|
||||
UPDATE Achievements
|
||||
SET completed = ${isCompleted}, completedTime = '${data.completed_time}', progress = ${data.progress}, updated = datetime('now', 'localtime')
|
||||
WHERE id = ${data.id};
|
||||
`;
|
||||
} else {
|
||||
sql = `
|
||||
UPDATE Achievements
|
||||
SET completed = ${isCompleted}, progress = ${data.progress}, updated = datetime('now', 'localtime')
|
||||
WHERE id = ${data.id};
|
||||
`;
|
||||
}
|
||||
return sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 导入UIAF数据
|
||||
* @since Alpha v0.1.4
|
||||
* @param {TGPlugin.UIAF.Achievement[]} data
|
||||
* @returns {string[]} sql
|
||||
*/
|
||||
function importUIAFData (data: TGPlugin.UIAF.Achievement[]): string[] {
|
||||
export function importUIAFData (data: TGPlugin.UIAF.Achievement[]): string[] {
|
||||
const sqlRes: string[] = [];
|
||||
data.map((achievement) => {
|
||||
let sql;
|
||||
@@ -303,5 +270,3 @@ function importUIAFData (data: TGPlugin.UIAF.Achievement[]): string[] {
|
||||
});
|
||||
return sqlRes;
|
||||
}
|
||||
|
||||
export default TGSql;
|
||||
|
||||
Reference in New Issue
Block a user