diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 5001104..f50bef0 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -87,7 +87,7 @@ fn search_move(index: i64) -> MoveSearchResult { let row_result = MoveSearchResult { id: row.read::("id"), name: row.read::<&str, _>("name").to_string(), - types: row.read::<&str, _>("types").to_string(), + types: serde_json::from_str(row.read::<&str, _>("types")).unwrap_or(vec![0]), power: row.read::("power"), category: row.read::("category"), priority: row.read::("priority"), @@ -101,7 +101,7 @@ fn search_move(index: i64) -> MoveSearchResult { return MoveSearchResult { id: 0, name: "Wrong".to_string(), - types: "[0]".to_string(), + types: vec![0], power: 0, category: 0, priority: 0, @@ -133,11 +133,44 @@ fn get_items() -> Vec { return items; } +#[tauri::command] +fn increase_attack_usage(index: i64) { + println!("update index: {index}"); + let connection = sqlite::open("./pokemon.db").unwrap(); + let query = format!("UPDATE pokemon__learnset SET usage = usage + 1 WHERE id = {index}"); + connection.execute(query).unwrap(); +} + +#[tauri::command] +fn search_learnset(index: i64) -> Vec { + let connection = sqlite::open("./pokemon.db").unwrap(); + let mut learnset: Vec = vec![]; + let move_query = "SELECT pl.id, pl.learnset_id, l.name, l.types, l.power, l.category FROM pokemon__learnset pl JOIN learnset l on pl.learnset_id = l.id WHERE pl.pokemon_id = ? ORDER BY usage DESC"; + for row in connection + .prepare(move_query) + .unwrap() + .into_iter() + .bind((1, index)) + .unwrap() + .map(|row| row.unwrap()) + { + let row_result = PokemonDataLearnset { + id: row.read::("id"), + learnset_id: row.read::("learnset_id"), + name: row.read::<&str, _>("name").to_string(), + types: serde_json::from_str(row.read::<&str, _>("types")).unwrap_or(vec![0]), + power: row.read::("power"), + category: row.read::("category"), + }; + learnset.push(row_result) + } + return learnset; +} #[tauri::command] fn search(index: i64) -> SearchResult { let connection = sqlite::open("./pokemon.db").unwrap(); let mut learnset: Vec = vec![]; - let move_query = "SELECT pl.id, pl.learnset_id, l.name, l.types, l.power, l.category FROM pokemon__learnset pl JOIN learnset l on pl.learnset_id = l.id WHERE pl.pokemon_id = ? ORDER BY usage"; + let move_query = "SELECT pl.id, pl.learnset_id, l.name, l.types, l.power, l.category FROM pokemon__learnset pl JOIN learnset l on pl.learnset_id = l.id WHERE pl.pokemon_id = ? ORDER BY usage DESC"; for row in connection .prepare(move_query) .unwrap() @@ -168,7 +201,7 @@ fn search(index: i64) -> SearchResult { let row_result = SearchResult { id: row.read::("id"), name: row.read::<&str, _>("name").to_string(), - types: row.read::<&str, _>("types").to_string(), + types: serde_json::from_str(row.read::<&str, _>("types")).unwrap_or(vec![0]), thumbnail: row.read::<&str, _>("thumbnail").to_string(), abilities: row.read::<&str, _>("abilities").to_string(), hp: row.read::("hp"), @@ -184,7 +217,7 @@ fn search(index: i64) -> SearchResult { return SearchResult { id: 0, name: "Missigno".to_string(), - types: "[]".to_string(), + types: vec![], thumbnail: "".to_string(), abilities: "{}".to_string(), hp: 0, @@ -198,7 +231,7 @@ fn search(index: i64) -> SearchResult { } fn main() { tauri::Builder::default() - .invoke_handler(tauri::generate_handler![autosearch_move, search_move, autosearch, search, get_items]) + .invoke_handler(tauri::generate_handler![autosearch_move, search_move, autosearch, search, get_items, increase_attack_usage, search_learnset]) .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 14b4673..ccc0727 100644 --- a/src-tauri/src/model.rs +++ b/src-tauri/src/model.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; pub struct SearchResult { pub id: i64, pub name: String, - pub types: String, + pub types: Vec, pub hp: i64, pub attack: i64, pub defense: i64, @@ -29,7 +29,7 @@ pub struct PokemonDataLearnset { pub struct MoveSearchResult { pub id: i64, pub name: String, - pub types: String, + pub types: Vec, pub power: i64, pub category: i64, pub priority: i64, diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 2cb4592..3085cbb 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "pokemon-data-displayer", - "version": "0.0.4" + "version": "0.0.5" }, "tauri": { "allowlist": { diff --git a/src/lib/DamageCalculator.svelte b/src/lib/DamageCalculator.svelte index 2dbba08..7d3c51b 100644 --- a/src/lib/DamageCalculator.svelte +++ b/src/lib/DamageCalculator.svelte @@ -104,7 +104,7 @@ attack_data_category: attackData.category, // 技タイプ - move_type: JSON.parse(attackData.types), + move_type: attackData.types, // 範囲の計算で使用する }; // 計算 diff --git a/src/lib/DisplayData.svelte b/src/lib/DisplayData.svelte index 02312fe..c335e85 100644 --- a/src/lib/DisplayData.svelte +++ b/src/lib/DisplayData.svelte @@ -1,4 +1,5 @@