j_db/src/query/mod.rs

31 lines
672 B
Rust

use crate::model::JdbModel;
pub type GeoffreyDBQuery<T> = Box<dyn Fn(u64, &T) -> bool>;
pub struct QueryBuilder<T: JdbModel> {
pub queries: Vec<GeoffreyDBQuery<T>>,
}
impl<T: JdbModel> Default for QueryBuilder<T> {
fn default() -> Self {
Self::new()
}
}
impl<T: JdbModel> QueryBuilder<T> {
pub fn new() -> Self {
QueryBuilder {
queries: Vec::new(),
}
}
pub fn add_query_clause(mut self, clause: GeoffreyDBQuery<T>) -> Self {
self.queries.push(clause);
self
}
pub fn with_id(self, id: u64) -> Self {
self.add_query_clause(Box::new(move |entry_id, _| entry_id == id))
}
}