icydb_core/interface/
query.rs1use crate::{
2 Error, Key,
3 db::query::{DeleteQuery, LoadQuery, SaveQuery},
4 interface::InterfaceError,
5};
6use thiserror::Error as ThisError;
7
8#[derive(Debug, ThisError)]
13pub enum QueryError {
14 #[error("entity not found: {0}")]
15 EntityNotFound(String),
16}
17
18impl From<QueryError> for Error {
19 fn from(err: QueryError) -> Self {
20 InterfaceError::from(err).into()
21 }
22}
23
24pub type LoadHandler = fn(LoadQuery) -> Result<Vec<Key>, Error>;
26
27pub type SaveHandler = fn(SaveQuery) -> Result<Key, Error>;
29
30pub type DeleteHandler = fn(DeleteQuery) -> Result<Vec<Key>, Error>;
32
33#[derive(Clone, Copy)]
39pub struct EntityDispatch {
40 pub entity_id: u64,
41 pub path: &'static str,
42 pub load_keys: LoadHandler,
43 pub save_key: SaveHandler,
44 pub delete_keys: DeleteHandler,
45}