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}