diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index d43162f8..9f809d6e 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -8,6 +8,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.8", + "once_cell", + "version_check", +] + [[package]] name = "aho-corasick" version = "0.7.20" @@ -95,6 +106,15 @@ dependencies = [ "system-deps 6.0.3", ] +[[package]] +name = "atoi" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" +dependencies = [ + "num-traits", +] + [[package]] name = "atomic" version = "0.5.1" @@ -420,6 +440,21 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" + [[package]] name = "crc32fast" version = "1.3.2" @@ -439,6 +474,16 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.15" @@ -630,6 +675,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + [[package]] name = "dtoa" version = "0.4.8" @@ -704,6 +755,12 @@ dependencies = [ "libc", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "fastrand" version = "1.9.0" @@ -759,6 +816,18 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "flume" +version = "0.10.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +dependencies = [ + "futures-core", + "futures-sink", + "pin-project", + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -840,6 +909,17 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-intrusive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot 0.11.2", +] + [[package]] name = "futures-io" version = "0.3.28" @@ -1197,6 +1277,18 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashlink" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" +dependencies = [ + "hashbrown", +] [[package]] name = "heck" @@ -1212,6 +1304,9 @@ name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +dependencies = [ + "unicode-segmentation", +] [[package]] name = "hermit-abi" @@ -1228,6 +1323,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "html5ever" version = "0.25.2" @@ -1420,6 +1521,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "0.4.8" @@ -1528,6 +1638,17 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libsqlite3-sys" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "line-wrap" version = "0.1.1" @@ -1661,6 +1782,12 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "minisign-verify" version = "0.2.1" @@ -1702,7 +1829,7 @@ dependencies = [ "log", "memchr", "mime", - "spin", + "spin 0.9.8", "tokio", "tokio-util", "version_check", @@ -1766,6 +1893,16 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "notify-rust" version = "4.8.0" @@ -2001,6 +2138,17 @@ dependencies = [ "system-deps 6.0.3", ] +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -2008,7 +2156,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core", + "parking_lot_core 0.9.7", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", ] [[package]] @@ -2163,6 +2325,26 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -2488,6 +2670,21 @@ dependencies = [ "windows 0.37.0", ] +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + [[package]] name = "rocket" version = "0.5.0-rc.3" @@ -2508,7 +2705,7 @@ dependencies = [ "memchr", "multer", "num_cpus", - "parking_lot", + "parking_lot 0.12.1", "pin-project-lite", "rand 0.8.5", "ref-cast", @@ -2606,6 +2803,27 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +dependencies = [ + "base64 0.21.0", +] + [[package]] name = "rustversion" version = "1.0.11" @@ -2654,6 +2872,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "security-framework" version = "2.8.2" @@ -2912,11 +3140,121 @@ dependencies = [ "system-deps 5.0.0", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "sqlformat" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" +dependencies = [ + "itertools", + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlx" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188" +dependencies = [ + "sqlx-core", + "sqlx-macros", +] + +[[package]] +name = "sqlx-core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" +dependencies = [ + "ahash", + "atoi", + "bitflags 1.3.2", + "byteorder", + "bytes", + "crc", + "crossbeam-queue", + "dotenvy", + "either", + "event-listener", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "hashlink", + "hex", + "indexmap", + "itoa 1.0.6", + "libc", + "libsqlite3-sys", + "log", + "memchr", + "once_cell", + "paste", + "percent-encoding", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlformat", + "sqlx-rt", + "stringprep", + "thiserror", + "time", + "tokio-stream", + "url", + "webpki-roots", +] + +[[package]] +name = "sqlx-macros" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9" +dependencies = [ + "dotenvy", + "either", + "heck 0.4.1", + "once_cell", + "proc-macro2", + "quote", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-rt", + "syn 1.0.109", + "url", +] + +[[package]] +name = "sqlx-rt" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" +dependencies = [ + "once_cell", + "tokio", + "tokio-rustls", +] [[package]] name = "stable-pattern" @@ -2950,7 +3288,7 @@ checksum = "7d69e88b23f23030bf4d0e9ca7b07434f70e1c1f4d3ca7e93ce958b373654d9f" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot", + "parking_lot 0.12.1", "phf_shared 0.10.0", "precomputed-hash", "serde", @@ -2968,6 +3306,16 @@ dependencies = [ "quote", ] +[[package]] +name = "stringprep" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "strsim" version = "0.10.0" @@ -3076,7 +3424,7 @@ dependencies = [ "ndk-sys", "objc", "once_cell", - "parking_lot", + "parking_lot 0.12.1", "paste", "png", "raw-window-handle", @@ -3208,6 +3556,7 @@ dependencies = [ "serde_json", "tauri", "tauri-build", + "tauri-plugin-sql", ] [[package]] @@ -3224,6 +3573,22 @@ dependencies = [ "tauri-utils", ] +[[package]] +name = "tauri-plugin-sql" +version = "0.1.0" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=dev#7acf865ffbb82c6d00334926a4527dd5ff3163a4" +dependencies = [ + "futures-core", + "log", + "serde", + "serde_json", + "sqlx", + "tauri", + "thiserror", + "time", + "tokio", +] + [[package]] name = "tauri-runtime" version = "0.12.1" @@ -3435,6 +3800,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + [[package]] name = "tokio-stream" version = "0.1.12" @@ -3627,6 +4003,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + [[package]] name = "url" version = "2.3.1" @@ -3846,6 +4234,25 @@ dependencies = [ "system-deps 6.0.3", ] +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki", +] + [[package]] name = "webview2-com" version = "0.19.1" diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 9ef0ddfd..899467af 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -74,6 +74,7 @@ fn read_cookie() -> String { fn main() { tauri::Builder::default() + .plugin(tauri_plugin_sql::Builder::default().build()) .invoke_handler(tauri::generate_handler![mys_login, read_cookie]) .setup(|_app| { tauri::async_runtime::spawn( @@ -89,7 +90,6 @@ fn main() { } Ok(()) }) - .plugin(tauri_plugin_sql::Builder::default().build()) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/src/App.vue b/src/App.vue index 135c1230..1298b93b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -38,7 +38,7 @@ import { useAchievementsStore } from "./store/modules/achievements"; import { InitTGData, DeleteTGData, WriteTGData } from "./utils/TGIndex"; import { getBuildTime } from "./utils/TGBuild"; // data -import { TGGetDataList } from "./data"; +import { TGGetDataList, TGInitDBT } from "./data"; import { restoreUiafData } from "./utils/UIAF"; const appStore = useAppStore(); @@ -107,6 +107,9 @@ async function writeIndex () { await WriteTGData(item.name, item.data); }); console.info("IndexedDB 写入完成!"); + console.info("开始写入 SQLite..."); + await TGInitDBT(); + console.info("SQLite 写入完成!"); } // 恢复数据 async function writeData () { diff --git a/src/data/index.ts b/src/data/index.ts index 9203a155..ca943884 100644 --- a/src/data/index.ts +++ b/src/data/index.ts @@ -2,13 +2,14 @@ * @file data index * @description data index * @author BTMuli - * @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; diff --git a/src/data/init/achievementSeries.ts b/src/data/init/achievementSeries.ts index 2cd1e74c..6b3d2729 100644 --- a/src/data/init/achievementSeries.ts +++ b/src/data/init/achievementSeries.ts @@ -4,6 +4,7 @@ * @author BTMuli * @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; +} diff --git a/src/data/init/achievements.ts b/src/data/init/achievements.ts index 9eac7d79..9b08ef23 100644 --- a/src/data/init/achievements.ts +++ b/src/data/init/achievements.ts @@ -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; +} diff --git a/src/data/init/index.ts b/src/data/init/index.ts index c33e1048..88502b1d 100644 --- a/src/data/init/index.ts +++ b/src/data/init/index.ts @@ -2,10 +2,16 @@ * @file data init index * @description data init index * @author BTMuli - * @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} + */ +export async function initDBT (): Promise { + 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(); +}