31 lines
672 B
Rust
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))
|
|
}
|
|
}
|