emixdiesel/
lib.rs

1pub mod dto;
2pub mod models;
3
4pub use emixcore::{Error, Result};
5
6pub mod prelude {
7    pub use diesel::prelude::*;
8    pub use diesel_async::{AsyncConnection, RunQueryDsl};
9}
10
11pub struct ClosureFilter<F> {
12    filter: F,
13}
14
15impl<F> ClosureFilter<F> {
16    pub fn new(filter: F) -> Self {
17        Self { filter }
18    }
19}
20
21pub trait TFilterQuery<T> {
22    fn apply(&self, query: T) -> T;
23}
24
25impl<T, F> TFilterQuery<T> for F
26where
27    F: Fn(T) -> T,
28{
29    fn apply(&self, query: T) -> T {
30        self(query)
31    }
32}
33
34impl<F, T> TFilterQuery<T> for ClosureFilter<F>
35where
36    F: Fn(T) -> T,
37{
38    fn apply(&self, query: T) -> T {
39        (self.filter)(query)
40    }
41}