battler_data/datastore/
data_store.rs1use alloc::vec::Vec;
2
3use anyhow::Result;
4
5use crate::{
6 AbilityData,
7 ClauseData,
8 ConditionData,
9 Id,
10 ItemData,
11 MoveData,
12 SpeciesData,
13 TypeChart,
14};
15
16pub trait DataStore: Send + Sync {
23 fn all_move_ids(&self, filter: &dyn Fn(&MoveData) -> bool) -> Result<Vec<Id>>;
25
26 fn get_type_chart(&self) -> Result<TypeChart>;
28
29 fn translate_alias(&self, id: &Id) -> Result<Option<Id>>;
31
32 fn get_ability(&self, id: &Id) -> Result<Option<AbilityData>>;
34 fn get_clause(&self, id: &Id) -> Result<Option<ClauseData>>;
36 fn get_condition(&self, id: &Id) -> Result<Option<ConditionData>>;
38 fn get_item(&self, id: &Id) -> Result<Option<ItemData>>;
40 fn get_move(&self, id: &Id) -> Result<Option<MoveData>>;
42 fn get_species(&self, id: &Id) -> Result<Option<SpeciesData>>;
44}
45
46pub trait DataStoreByName: DataStore {
48 fn get_ability_by_name(&self, name: &str) -> Result<Option<AbilityData>>;
50 fn get_clause_by_name(&self, name: &str) -> Result<Option<ClauseData>>;
52 fn get_condition_by_name(&self, name: &str) -> Result<Option<ConditionData>>;
54 fn get_item_by_name(&self, name: &str) -> Result<Option<ItemData>>;
56 fn get_move_by_name(&self, name: &str) -> Result<Option<MoveData>>;
58 fn get_species_by_name(&self, name: &str) -> Result<Option<SpeciesData>>;
60}