mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-14 09:38:13 +08:00
🎨 fix(db): 改进代码结构
This commit is contained in:
@@ -112,8 +112,8 @@ import { useAchievementsStore } from "../store/modules/achievements";
|
||||
// Utils
|
||||
import { TGAppData } from "../data";
|
||||
import { createTGWindow } from "../utils/TGWindow";
|
||||
import { getUiafHeader, readUiafData, verifyUiafData, backupUiafData } from "../utils/UIAF";
|
||||
import TGSqlite from "../core/database/TGSqlite";
|
||||
import { getUiafHeader, readUiafData, verifyUiafData } from "../utils/UIAF";
|
||||
import TGSqlite from "../utils/TGSqlite";
|
||||
|
||||
// Store
|
||||
const achievementsStore = useAchievementsStore();
|
||||
@@ -144,13 +144,13 @@ onMounted(async () => {
|
||||
|
||||
// 加载数据,数据源:合并后的本地数据
|
||||
async function loadData () {
|
||||
const { total, fin } = await TGSqlite.search.overview();
|
||||
const { total, fin } = await TGSqlite.getAchievementsOverview();
|
||||
achievementsStore.flushData(total, fin);
|
||||
loadingTitle.value = "正在获取成就系列数据";
|
||||
CardsInfo.value = TGAppData.nameCards[1];
|
||||
seriesList.value = await TGSqlite.search.achievementSeries();
|
||||
seriesList.value = await TGSqlite.getAchievementSeries();
|
||||
loadingTitle.value = "正在获取成就数据";
|
||||
const getAchievements = await TGSqlite.search.achievement.bySeries();
|
||||
const getAchievements = await TGSqlite.getAchievements();
|
||||
getAchievements.sort((a, b) => {
|
||||
if (a.isCompleted === b.isCompleted) {
|
||||
return a.id - b.id;
|
||||
@@ -174,7 +174,7 @@ async function selectSeries (index: number) {
|
||||
loadingTitle.value = "正在获取对应的成就数据";
|
||||
selectedIndex.value = index;
|
||||
selectedSeries.value = seriesList.value[index].id;
|
||||
const getAchievements = await TGSqlite.search.achievement.bySeries(selectedSeries.value);
|
||||
const getAchievements = await TGSqlite.getAchievements(selectedSeries.value);
|
||||
loadingTitle.value = "正在查找对应的成就名片";
|
||||
let getCard: BTMuli.Genshin.NameCard;
|
||||
if (selectedSeries.value !== 0 && selectedSeries.value !== 17) {
|
||||
@@ -182,13 +182,6 @@ async function selectSeries (index: number) {
|
||||
} else {
|
||||
getCard = {} as BTMuli.Genshin.NameCard;
|
||||
}
|
||||
getAchievements.sort((a, b) => {
|
||||
if (a.isCompleted === b.isCompleted) {
|
||||
return a.id - b.id;
|
||||
} else {
|
||||
return a.isCompleted ? 1 : -1;
|
||||
}
|
||||
});
|
||||
selectedAchievement.value = getAchievements;
|
||||
getCardInfo.value = getCard;
|
||||
loading.value = false;
|
||||
@@ -209,7 +202,7 @@ async function searchCard () {
|
||||
}
|
||||
loadingTitle.value = "正在搜索";
|
||||
loading.value = true;
|
||||
const res = await TGSqlite.search.achievement.bySearch(search.value);
|
||||
const res = await TGSqlite.searchAchievements(search.value);
|
||||
selectedIndex.value = -1;
|
||||
setTimeout(() => {
|
||||
loading.value = false;
|
||||
@@ -218,15 +211,8 @@ async function searchCard () {
|
||||
snackbarColor.value = "#F5810A";
|
||||
snackbarText.value = "没有找到对应的成就";
|
||||
snackbar.value = true;
|
||||
selectedAchievement.value = await TGSqlite.search.achievement.bySeries();
|
||||
selectedAchievement.value = await TGSqlite.getAchievements();
|
||||
} else {
|
||||
res.sort((a, b) => {
|
||||
if (a.isCompleted === b.isCompleted) {
|
||||
return a.id - b.id;
|
||||
} else {
|
||||
return a.isCompleted ? 1 : -1;
|
||||
}
|
||||
});
|
||||
selectedAchievement.value = res;
|
||||
}
|
||||
}
|
||||
@@ -252,11 +238,9 @@ async function importJson () {
|
||||
loading.value = true;
|
||||
const remoteData: TGPlugin.UIAF.BaseData = JSON.parse(remoteRaw);
|
||||
loadingTitle.value = "正在合并成就数据";
|
||||
await TGSqlite.UIAF.import(remoteData.list);
|
||||
loadingTitle.value = "正在备份数据";
|
||||
await backupAchievementData();
|
||||
await TGSqlite.mergeUIAF(remoteData.list);
|
||||
loadingTitle.value = "正在刷新数据";
|
||||
const overview = await TGSqlite.search.overview();
|
||||
const overview = await TGSqlite.getAchievementsOverview();
|
||||
achievementsStore.flushData(overview.total, overview.fin);
|
||||
// 刷新数据
|
||||
await loadData();
|
||||
@@ -264,12 +248,6 @@ async function importJson () {
|
||||
}
|
||||
}
|
||||
|
||||
// 备份成就数据
|
||||
async function backupAchievementData () {
|
||||
const achievements = await TGSqlite.UIAF.export();
|
||||
await backupUiafData(achievements);
|
||||
}
|
||||
|
||||
// 导出
|
||||
async function exportJson () {
|
||||
// 判断是否有数据
|
||||
@@ -282,7 +260,7 @@ async function exportJson () {
|
||||
// 获取本地数据
|
||||
const UiafData = {
|
||||
info: await getUiafHeader(),
|
||||
list: await TGSqlite.UIAF.export(),
|
||||
list: await TGSqlite.getUIAF(),
|
||||
};
|
||||
const isSave = await dialog.save({
|
||||
// TODO: 设置保存文件名
|
||||
@@ -295,10 +273,14 @@ async function exportJson () {
|
||||
});
|
||||
if (isSave) {
|
||||
await fs.writeTextFile(isSave, JSON.stringify(UiafData));
|
||||
snackbarColor.value = "#00BFA5";
|
||||
snackbarText.value = "导出成功";
|
||||
snackbar.value = true;
|
||||
} else {
|
||||
snackbarColor.value = "#F5810A";
|
||||
snackbarText.value = "导出已取消";
|
||||
snackbar.value = true;
|
||||
}
|
||||
snackbarColor.value = "#00BFA5";
|
||||
snackbarText.value = "导出成功";
|
||||
snackbar.value = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ import { useHk4eStore } from "../store/modules/hk4e";
|
||||
import { useAchievementsStore } from "../store/modules/achievements";
|
||||
// utils
|
||||
import { backupUiafData, restoreUiafData } from "../utils/UIAF";
|
||||
import TGSqlite from "../core/database/TGSqlite";
|
||||
import TGSqlite from "../utils/TGSqlite";
|
||||
|
||||
// Store
|
||||
const appStore = useAppStore();
|
||||
@@ -308,7 +308,7 @@ async function doConfirm (oper: string) {
|
||||
async function backupData () {
|
||||
loadingTitle.value = "正在备份数据...";
|
||||
loading.value = true;
|
||||
const achievements = await TGSqlite.UIAF.export();
|
||||
const achievements = await TGSqlite.getUIAF();
|
||||
await backupUiafData(achievements);
|
||||
loading.value = false;
|
||||
snackbarText.value = "数据已备份!";
|
||||
@@ -319,7 +319,6 @@ async function backupData () {
|
||||
async function restoreData () {
|
||||
const res = await restoreUiafData();
|
||||
if (res !== false) {
|
||||
achievementsStore.flushData(res.total, res.fin);
|
||||
snackbarText.value = "数据已恢复!";
|
||||
snackbarColor.value = "success";
|
||||
snackbar.value = true;
|
||||
@@ -420,18 +419,14 @@ function delDB () {
|
||||
// 检查 SQLite 数据库
|
||||
async function checkDB () {
|
||||
loadingTitle.value = "正在检查数据库表单完整性...";
|
||||
const res = await TGSqlite.checkDB();
|
||||
const res = await TGSqlite.check();
|
||||
if (!res) {
|
||||
confirmOper.value = "resetDB";
|
||||
confirmText.value = "数据库表单不完整,是否重置数据库?";
|
||||
loading.value = false;
|
||||
confirmShow.value = true;
|
||||
} else {
|
||||
loadingTitle.value = "正在检查数据库数据完整性...";
|
||||
await TGSqlite.update.achievementSeries();
|
||||
await TGSqlite.update.achievement();
|
||||
loading.value = false;
|
||||
snackbarText.value = "数据库检查完毕!";
|
||||
snackbarText.value = "数据库表单完整!";
|
||||
snackbarColor.value = "success";
|
||||
snackbar.value = true;
|
||||
}
|
||||
@@ -439,7 +434,7 @@ async function checkDB () {
|
||||
|
||||
// 重置 SQLite 数据库
|
||||
async function resetDB () {
|
||||
await TGSqlite.resetDB();
|
||||
await TGSqlite.reset();
|
||||
snackbarText.value = "数据库已重置!请载入备份数据。";
|
||||
snackbarColor.value = "success";
|
||||
snackbar.value = true;
|
||||
|
||||
@@ -12,6 +12,8 @@ import TPosition from "../components/t-position.vue";
|
||||
import TCalendar from "../components/t-calendar.vue";
|
||||
// store
|
||||
import { useHomeStore } from "../store/modules/home";
|
||||
// utils
|
||||
import TGSqlite from "../utils/TGSqlite";
|
||||
|
||||
// store
|
||||
const homeStore = useHomeStore();
|
||||
@@ -40,6 +42,12 @@ function readLoading (): void {
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
loadingTitle.value = "正在检测数据完整性";
|
||||
const isOK = await TGSqlite.check();
|
||||
if (!isOK) {
|
||||
loadingTitle.value = "正在修复数据";
|
||||
await TGSqlite.reset();
|
||||
}
|
||||
loadingTitle.value = "正在加载首页";
|
||||
const showItems = homeStore.getShowValue();
|
||||
await Promise.allSettled(
|
||||
|
||||
Reference in New Issue
Block a user