Refactored into service directory
This commit is contained in:
47
service/src/db/spells/mod.rs
Normal file
47
service/src/db/spells/mod.rs
Normal file
@@ -0,0 +1,47 @@
|
||||
mod model;
|
||||
mod routes;
|
||||
mod types;
|
||||
|
||||
pub use model::*;
|
||||
pub use types::*;
|
||||
pub use routes::init_routes;
|
||||
|
||||
pub fn load_data() {
|
||||
let root_path = std::env::current_dir().unwrap();
|
||||
let files = [
|
||||
"cantrips.json", "level_1.json", "level_2.json", "level_3.json", "level_4.json", "level_5.json", "level_6.json", "level_7.json", "level_8.json", "level_9.json"
|
||||
];
|
||||
let mut spells: Vec<Spell> = vec![];
|
||||
for file in files {
|
||||
let mut data_path = std::path::PathBuf::from(&root_path);
|
||||
data_path.push(format!("data/spells/{}", file));
|
||||
let path = data_path.to_str().unwrap();
|
||||
match std::fs::read_to_string(path) {
|
||||
Ok(data) => {
|
||||
log::debug!("Loading spells from {}", path);
|
||||
match serde_json::from_str::<serde_json::Value>(&data) {
|
||||
Ok(json) => {
|
||||
match serde_json::from_value::<Vec<Spell>>(json) {
|
||||
Ok(mut new_spells) => spells.append(&mut new_spells),
|
||||
Err(err) => log::error!("Failed to parse spells data: {}", err)
|
||||
}
|
||||
},
|
||||
Err(err) => log::error!("Failed to parse spells data to value: {}", err)
|
||||
};
|
||||
},
|
||||
Err(err) => log::error!("Failed to read from {}: {}", file, err)
|
||||
};
|
||||
}
|
||||
let count = QuerySpell::get_count(&QueryFilters::default()).unwrap();
|
||||
if count >= spells.len() as i64 {
|
||||
log::warn!("Spell data is already loaded");
|
||||
return;
|
||||
}
|
||||
for spell in spells {
|
||||
let spell_name = spell.name.clone();
|
||||
match InsertSpell::insert(spell.into()) {
|
||||
Ok(_) => {},
|
||||
Err(err) => log::error!("Failed to insert '{}' spell: {}", spell_name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user