From c363f8824299251e9d4a29d0a9bd939d1828de31 Mon Sep 17 00:00:00 2001 From: Hansoo Date: Sat, 21 Jan 2023 19:16:57 +0900 Subject: [PATCH] added search for attack --- package-lock.json | 83 ++++++++++++++------------------- package.json | 8 ++-- src-tauri/src/main.rs | 73 ++++++++++++++++++++++++++++- src-tauri/src/model.rs | 10 ++++ src/lib/DamageCalculator.svelte | 47 +++++++++++++++++-- 5 files changed, 163 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index 86901a0..e91f4aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,13 +12,13 @@ "simple-svelte-autocomplete": "^2.5.1" }, "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^2.0.2", "@tauri-apps/cli": "^1.2.3", "@tsconfig/svelte": "^3.0.0", "@types/node": "^18.7.10", - "svelte": "^3.54.0", - "svelte-check": "^3.0.0", - "svelte-preprocess": "^5.0.0", + "svelte": "^3.55.1", + "svelte-check": "^3.0.2", + "svelte-preprocess": "^5.0.1", "tslib": "^2.4.1", "typescript": "^4.6.4", "vite": "^4.0.0" @@ -1395,18 +1395,18 @@ "integrity": "sha512-wC0RzbmWhMMAqJ3PK+4sBSAHZl+Y/Qz7KDk1Wp5Fnxj+PJvOXWCIAOi5FLQZGrIMl82YKvFErzEtOCmfNOMUJg==" }, "node_modules/sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", "dev": true, "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", "buffer-crc32": "^0.2.5", "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" + "sander": "^0.5.0" }, "bin": { - "sorcery": "bin/index.js" + "sorcery": "bin/sorcery" } }, "node_modules/source-map-js": { @@ -1418,13 +1418,6 @@ "node": ">=0.10.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -1450,18 +1443,18 @@ } }, "node_modules/svelte": { - "version": "3.55.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.0.tgz", - "integrity": "sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA==", + "version": "3.55.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", + "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/svelte-check": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.0.1.tgz", - "integrity": "sha512-7YpHYWv6V2qhcvVeAlXixUPAlpLCXB1nZEQK0EItB3PtuYmENhKclbc5uKSJTodTwWR1y+4stKGcbH30k6A3Yw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.0.2.tgz", + "integrity": "sha512-DkhKhV0Jt0gh7q9DBB26+J2Vfb9y4/4JWxnbkXBZha7542LOhwvj3edJFjyJ+xjdaXyInZ+YRRYc3V6wytP2ew==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", @@ -1493,9 +1486,9 @@ } }, "node_modules/svelte-preprocess": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.0.tgz", - "integrity": "sha512-q7lpa7i2FBu8Pa+G0MmuQQWETBwCKgsGmuq1Sf6n8q4uaG9ZLcLP0Y+etC6bF4sE6EbLxfiI38zV6RfPe3RSfg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz", + "integrity": "sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -1503,7 +1496,7 @@ "@types/sass": "^1.43.1", "detect-indent": "^6.1.0", "magic-string": "^0.27.0", - "sorcery": "^0.10.0", + "sorcery": "^0.11.0", "strip-indent": "^3.0.0" }, "engines": { @@ -2500,15 +2493,15 @@ "integrity": "sha512-wC0RzbmWhMMAqJ3PK+4sBSAHZl+Y/Qz7KDk1Wp5Fnxj+PJvOXWCIAOi5FLQZGrIMl82YKvFErzEtOCmfNOMUJg==" }, "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", "dev": true, "requires": { + "@jridgewell/sourcemap-codec": "^1.4.14", "buffer-crc32": "^0.2.5", "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" + "sander": "^0.5.0" } }, "source-map-js": { @@ -2517,12 +2510,6 @@ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -2539,15 +2526,15 @@ "dev": true }, "svelte": { - "version": "3.55.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.0.tgz", - "integrity": "sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA==", + "version": "3.55.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", + "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", "dev": true }, "svelte-check": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.0.1.tgz", - "integrity": "sha512-7YpHYWv6V2qhcvVeAlXixUPAlpLCXB1nZEQK0EItB3PtuYmENhKclbc5uKSJTodTwWR1y+4stKGcbH30k6A3Yw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.0.2.tgz", + "integrity": "sha512-DkhKhV0Jt0gh7q9DBB26+J2Vfb9y4/4JWxnbkXBZha7542LOhwvj3edJFjyJ+xjdaXyInZ+YRRYc3V6wytP2ew==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.17", @@ -2568,16 +2555,16 @@ "requires": {} }, "svelte-preprocess": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.0.tgz", - "integrity": "sha512-q7lpa7i2FBu8Pa+G0MmuQQWETBwCKgsGmuq1Sf6n8q4uaG9ZLcLP0Y+etC6bF4sE6EbLxfiI38zV6RfPe3RSfg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz", + "integrity": "sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ==", "dev": true, "requires": { "@types/pug": "^2.0.6", "@types/sass": "^1.43.1", "detect-indent": "^6.1.0", "magic-string": "^0.27.0", - "sorcery": "^0.10.0", + "sorcery": "^0.11.0", "strip-indent": "^3.0.0" } }, diff --git a/package.json b/package.json index 1866849..d733b6c 100644 --- a/package.json +++ b/package.json @@ -15,13 +15,13 @@ "simple-svelte-autocomplete": "^2.5.1" }, "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^2.0.2", "@tauri-apps/cli": "^1.2.3", "@tsconfig/svelte": "^3.0.0", "@types/node": "^18.7.10", - "svelte": "^3.54.0", - "svelte-check": "^3.0.0", - "svelte-preprocess": "^5.0.0", + "svelte": "^3.55.1", + "svelte-check": "^3.0.2", + "svelte-preprocess": "^5.0.1", "tslib": "^2.4.1", "typescript": "^4.6.4", "vite": "^4.0.0" diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 428a46e..d2df74e 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -3,9 +3,44 @@ windows_subsystem = "windows" )] use wana_kana::to_katakana::*; +use wana_kana::to_hiragana::*; mod model; use model::*; +#[tauri::command] +fn autosearch_move(keyword: &str) -> serde_json::Value { + let connection = sqlite::open("./pokemon.db").unwrap(); + let query = "SELECT * FROM learnset WHERE name like ? or name like ? or name like ? LIMIT 5"; + let mut result: Vec = vec![]; + let aste_keyword = format!("%{}%", keyword.to_lowercase()); + let katakana = format!("%{}%", to_katakana(keyword)); + let hiragana = format!("%{}%", to_hiragana(keyword)); + println!("{} - {}", katakana, hiragana); + for row in connection + .prepare(query) + .unwrap() + .into_iter() + .bind((1, aste_keyword.as_str())) + .unwrap() + .bind((2, katakana.as_str())) + .unwrap() + .bind((3, hiragana.as_str())) + .unwrap() + .map(|row| row.unwrap()) + { + let row_result = Autosearch { + id: row.read::("id"), + name: format!( + "{}", + row.read::<&str, _>("name").to_string() + ), + }; + result.push(row_result); + } + println!("{:?}", result); + serde_json::to_value(result).unwrap_or(serde_json::json!("[]")) +} + #[tauri::command] fn autosearch(keyword: &str) -> serde_json::Value { let connection = sqlite::open("./pokemon.db").unwrap(); @@ -37,6 +72,42 @@ fn autosearch(keyword: &str) -> serde_json::Value { serde_json::to_value(result).unwrap_or(serde_json::json!("[]")) } #[tauri::command] +fn search_move(index: i64) -> MoveSearchResult { + let connection = sqlite::open("./pokemon.db").unwrap(); + let query = "SELECT * FROM learnset WHERE id = ?"; + for row in connection + .prepare(query) + .unwrap() + .into_iter() + .bind((1, index)) + .unwrap() + .map(|row| row.unwrap()) + { + let row_result = MoveSearchResult { + id: row.read::("id"), + name: row.read::<&str, _>("name").to_string(), + types: row.read::<&str, _>("types").to_string(), + power: row.read::("power"), + category: row.read::("category"), + priority: row.read::("priority"), + condition: match row.read::, _>("condition") { + Some(t) => Some(t.to_string()), + _ => None, + }, + }; + return row_result + } + return MoveSearchResult { + id: 0, + name: "Wrong".to_string(), + types: "[0]".to_string(), + power: 0, + category: 0, + priority: 0, + condition: None, + } +} +#[tauri::command] fn search(index: i64) -> SearchResult { let connection = sqlite::open("./pokemon.db").unwrap(); let query = "SELECT * FROM pokemon WHERE id = ?"; @@ -79,7 +150,7 @@ fn search(index: i64) -> SearchResult { } fn main() { tauri::Builder::default() - .invoke_handler(tauri::generate_handler![autosearch, search]) + .invoke_handler(tauri::generate_handler![autosearch_move, search_move, autosearch, search]) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/src-tauri/src/model.rs b/src-tauri/src/model.rs index fb6e387..ca07c7a 100644 --- a/src-tauri/src/model.rs +++ b/src-tauri/src/model.rs @@ -15,6 +15,16 @@ pub struct SearchResult { pub thumbnail: String, } +#[derive(Serialize, Deserialize, Debug, Clone)] +pub struct MoveSearchResult { + pub id: i64, + pub name: String, + pub types: String, + pub power: i64, + pub category: i64, + pub priority: i64, + pub condition: Option, +} #[derive(Serialize, Deserialize, Debug, Clone)] pub struct Autosearch { pub id: i64, diff --git a/src/lib/DamageCalculator.svelte b/src/lib/DamageCalculator.svelte index 58a3ed6..9067ab4 100644 --- a/src/lib/DamageCalculator.svelte +++ b/src/lib/DamageCalculator.svelte @@ -1,7 +1,20 @@
@@ -103,9 +132,17 @@ - - - +
Attack SpecialAttack Power: + + Total Damage: {total_min_damage} ~ {total_max_damage}