mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-13 09:28:14 +08:00
🤔 feat(sqlite): 数据成功输入,接下来就是读取、校验了,先干饭吧
This commit is contained in:
@@ -2,13 +2,14 @@
|
||||
* @file data index
|
||||
* @description data index
|
||||
* @author BTMuli<bt-muli@outlook.com>
|
||||
* @since Alpha
|
||||
* @since Alpha v0.1.4
|
||||
*/
|
||||
|
||||
import { AppData, AppDataList } from "./app";
|
||||
import { ConfigList, getDataList } from "./init";
|
||||
import { ConfigList, getDataList, initDBT } from "./init";
|
||||
|
||||
export const TGAppData = AppData;
|
||||
export const TGAppDataList = AppDataList;
|
||||
export const TGConfigList = ConfigList;
|
||||
export const TGGetDataList = getDataList;
|
||||
export const TGInitDBT = initDBT;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
* @author BTMuli<bt-muli@outlook.com>
|
||||
* @since Alpha v0.1.2
|
||||
*/
|
||||
|
||||
import { AppData } from "../app";
|
||||
|
||||
/**
|
||||
@@ -28,3 +29,45 @@ export function getData (): BTMuli.Genshin.AchievementSeries[] {
|
||||
return data[Number(key)];
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 创建表的 SQL 语句
|
||||
* @since Alpha v0.1.4
|
||||
* @see BTMuli.Genshin.AchievementSeries
|
||||
* @returns {string}
|
||||
*/
|
||||
export const CTS = `CREATE TABLE IF NOT EXISTS ${Config.storeName} (
|
||||
id INTEGER PRIMARY KEY,
|
||||
'order' INTEGER NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
version TEXT NOT NULL,
|
||||
total INTEGER NOT NULL,
|
||||
finished INTEGER NOT NULL,
|
||||
card TEXT NOT NULL,
|
||||
icon TEXT NOT NULL
|
||||
);`;
|
||||
|
||||
/**
|
||||
* @description 初始化数据的 SQL 语句
|
||||
* @since Alpha v0.1.4
|
||||
* @see BTMuli.Genshin.AchievementSeries
|
||||
* @returns {string[]}
|
||||
*/
|
||||
export function getInsertSqls (): string[] {
|
||||
const data = getData();
|
||||
const sql: string[] = [];
|
||||
data.forEach((item) => {
|
||||
const card = item.card ? item.card : "";
|
||||
sql.push(`INSERT INTO ${Config.storeName} VALUES (
|
||||
${item.id},
|
||||
${item.order},
|
||||
"${item.name}",
|
||||
"${item.version}",
|
||||
${item.total_count},
|
||||
${item.completed_count},
|
||||
"${card}",
|
||||
"${item.icon}"
|
||||
)`);
|
||||
});
|
||||
return sql;
|
||||
}
|
||||
|
||||
@@ -28,3 +28,50 @@ export function getData (): BTMuli.Genshin.Achievement[] {
|
||||
return data[Number(key)];
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 创建表的 SQLite 语句
|
||||
* @since Alpha v0.1.4
|
||||
* @todo 外键约束
|
||||
* @see BTMuli.Genshin.Achievement
|
||||
*/
|
||||
export const CTS: string = `CREATE TABLE IF NOT EXISTS ${Config.storeName} (
|
||||
id INTEGER PRIMARY KEY,
|
||||
series INTEGER NOT NULL,
|
||||
'order' INTEGER NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
reward INTEGER NOT NULL,
|
||||
completed INTEGER NOT NULL,
|
||||
completed_time TEXT NOT NULL,
|
||||
progress INTEGER NOT NULL,
|
||||
version TEXT NOT NULL
|
||||
);`;
|
||||
|
||||
/**
|
||||
* @description 初始化数据的 SQL 语句
|
||||
* @since Alpha v0.1.4
|
||||
* @see BTMuli.Genshin.Achievement
|
||||
* @returns {string[]}
|
||||
*/
|
||||
export function getInsertSqls (): string[] {
|
||||
const data = getData();
|
||||
const sql: string[] = [];
|
||||
data.forEach((item) => {
|
||||
const completedTime = item.completed_time ? item.completed_time : "";
|
||||
const completed = item.completed ? 1 : 0;
|
||||
sql.push(`INSERT INTO ${Config.storeName} VALUES (
|
||||
${item.id},
|
||||
${item.series},
|
||||
${item.order},
|
||||
'${item.name}',
|
||||
'${item.description}',
|
||||
${item.reward},
|
||||
${completed},
|
||||
'${completedTime}',
|
||||
${item.progress},
|
||||
'${item.version}'
|
||||
)`);
|
||||
});
|
||||
return sql;
|
||||
}
|
||||
|
||||
@@ -2,10 +2,16 @@
|
||||
* @file data init index
|
||||
* @description data init index
|
||||
* @author BTMuli<bt-muli@outlook.com>
|
||||
* @since Alpha v0.1.3
|
||||
* @since Alpha v0.1.4
|
||||
*/
|
||||
import { Config as AchievementsConfig, getData as getAchievementsData } from "./achievements";
|
||||
import { Config as SeriesConfig, getData as getSeriesData } from "./achievementSeries";
|
||||
|
||||
// tauri-pligin
|
||||
import Database from "tauri-plugin-sql-api";
|
||||
// local-data
|
||||
import { Config as AchievementsConfig, getData as getAchievementsData, CTS as ctsAchievement, getInsertSqls as gisAchievement } from "./achievements";
|
||||
import { Config as SeriesConfig, getData as getSeriesData, CTS as ctsSeries, getInsertSqls as gisSeries } from "./achievementSeries";
|
||||
|
||||
export const SqlitePath = "sqlite:tauri-genshin.db";
|
||||
|
||||
export const ConfigList = [AchievementsConfig, SeriesConfig];
|
||||
|
||||
@@ -19,3 +25,24 @@ export const getDataList = [
|
||||
data: getSeriesData(),
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* @description 初始化数据表
|
||||
* @since Alpha v0.1.4
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
export async function initDBT (): Promise<void> {
|
||||
const SQlite = await Database.load(SqlitePath);
|
||||
// 创建表
|
||||
await SQlite.execute(ctsSeries);
|
||||
console.log("AchievementSeries 表创建成功");
|
||||
await SQlite.execute(ctsAchievement);
|
||||
console.log("Achievements 表创建成功");
|
||||
// 初始化数据
|
||||
const sqls = gisAchievement().concat(gisSeries());
|
||||
sqls.map(async (sql) => {
|
||||
console.log(sql);
|
||||
await SQlite.execute(sql);
|
||||
});
|
||||
await SQlite.close();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user