added save and load json
This commit is contained in:
@@ -2,11 +2,14 @@
|
||||
all(not(debug_assertions), target_os = "windows"),
|
||||
windows_subsystem = "windows"
|
||||
)]
|
||||
use std::fs;
|
||||
|
||||
use serde_json::json;
|
||||
use wana_kana::to_katakana::*;
|
||||
use wana_kana::to_hiragana::*;
|
||||
use wana_kana::to_katakana::*;
|
||||
mod model;
|
||||
use model::*;
|
||||
use wfd::DialogParams;
|
||||
|
||||
#[tauri::command]
|
||||
fn autosearch_move(keyword: &str) -> serde_json::Value {
|
||||
@@ -31,10 +34,7 @@ fn autosearch_move(keyword: &str) -> serde_json::Value {
|
||||
{
|
||||
let row_result = Autosearch {
|
||||
id: row.read::<i64, _>("id"),
|
||||
name: format!(
|
||||
"{}",
|
||||
row.read::<&str, _>("name").to_string()
|
||||
),
|
||||
name: format!("{}", row.read::<&str, _>("name").to_string()),
|
||||
};
|
||||
result.push(row_result);
|
||||
}
|
||||
@@ -42,6 +42,65 @@ fn autosearch_move(keyword: &str) -> serde_json::Value {
|
||||
serde_json::to_value(result).unwrap_or(serde_json::json!("[]"))
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
fn save_json(json_content: Vec<Option<PokemonDataToSave>>) -> Result<(), String> {
|
||||
let params = DialogParams {
|
||||
title: "Select a file to save",
|
||||
file_types: vec![("JSON File", "*.json")],
|
||||
file_name: "team.json",
|
||||
default_extension: "json",
|
||||
..Default::default()
|
||||
};
|
||||
match wfd::save_dialog(params) {
|
||||
Ok(r) => {
|
||||
let result = fs::write(r.selected_file_path, serde_json::to_string_pretty(&json_content).unwrap());
|
||||
if let Err(e) = result {
|
||||
Err(format!("Error: {e:?}"))
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
Err(format!("Error: {e:?}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
#[tauri::command]
|
||||
fn load_json() -> Result<serde_json::Value, String> {
|
||||
let params = DialogParams {
|
||||
title: "Select a file to load",
|
||||
file_types: vec![("JSON File", "*.json")],
|
||||
default_extension: "json",
|
||||
..Default::default()
|
||||
};
|
||||
match wfd::open_dialog(params) {
|
||||
Ok(r) => {
|
||||
let file_content_string = fs::read_to_string(r.selected_file_path);
|
||||
if let Err(e) = file_content_string {
|
||||
return Err(format!("Error: {e:?}"))
|
||||
}
|
||||
match serde_json::from_str::<Vec<PokemonDataToSave>>(&file_content_string.unwrap()) {
|
||||
Ok(c) => {
|
||||
let mut result: Vec<PokemonDataToLoad> = vec![];
|
||||
for d in c {
|
||||
let pokemon_data = search(d.id);
|
||||
let pokemon_data_to_load = PokemonDataToLoad::from((d, pokemon_data));
|
||||
result.push(pokemon_data_to_load);
|
||||
}
|
||||
if result.len() > 0 {
|
||||
Ok(serde_json::to_value(result).unwrap())
|
||||
} else {
|
||||
Err("Unable to load pokemon data.".to_string())
|
||||
}
|
||||
},
|
||||
Err(e) => Err(format!("Error: {e:?}")),
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
Err(format!("Error: {e:?}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
#[tauri::command]
|
||||
fn autosearch(keyword: &str) -> serde_json::Value {
|
||||
let connection = sqlite::open("./pokemon.db").unwrap();
|
||||
@@ -62,10 +121,7 @@ fn autosearch(keyword: &str) -> serde_json::Value {
|
||||
{
|
||||
let row_result = Autosearch {
|
||||
id: row.read::<i64, _>("id"),
|
||||
name: format!(
|
||||
"{}",
|
||||
row.read::<&str, _>("name").to_string()
|
||||
),
|
||||
name: format!("{}", row.read::<&str, _>("name").to_string()),
|
||||
};
|
||||
result.push(row_result);
|
||||
}
|
||||
@@ -96,7 +152,7 @@ fn search_move(index: i64) -> MoveSearchResult {
|
||||
_ => None,
|
||||
},
|
||||
};
|
||||
return row_result
|
||||
return row_result;
|
||||
}
|
||||
return MoveSearchResult {
|
||||
id: 0,
|
||||
@@ -106,7 +162,7 @@ fn search_move(index: i64) -> MoveSearchResult {
|
||||
category: 0,
|
||||
priority: 0,
|
||||
condition: None,
|
||||
}
|
||||
};
|
||||
}
|
||||
#[tauri::command]
|
||||
fn get_items() -> Vec<ItemSearchResult> {
|
||||
@@ -212,7 +268,7 @@ fn search(index: i64) -> SearchResult {
|
||||
speed: row.read::<i64, _>("speed"),
|
||||
learnset: learnset,
|
||||
};
|
||||
return row_result
|
||||
return row_result;
|
||||
}
|
||||
return SearchResult {
|
||||
id: 0,
|
||||
@@ -227,11 +283,21 @@ fn search(index: i64) -> SearchResult {
|
||||
special_defense: 0,
|
||||
speed: 0,
|
||||
learnset: vec![],
|
||||
}
|
||||
};
|
||||
}
|
||||
fn main() {
|
||||
tauri::Builder::default()
|
||||
.invoke_handler(tauri::generate_handler![autosearch_move, search_move, autosearch, search, get_items, increase_attack_usage, search_learnset])
|
||||
.invoke_handler(tauri::generate_handler![
|
||||
autosearch_move,
|
||||
search_move,
|
||||
autosearch,
|
||||
search,
|
||||
get_items,
|
||||
increase_attack_usage,
|
||||
search_learnset,
|
||||
save_json,
|
||||
load_json,
|
||||
])
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user