use super::{Filter, NestedIdFilter, NestedIdWrapper, Operator, ToNestedGraphqlNestedIdFilter};
use crate::helper_macros::{is_none, is_none_range};
use crate::types::{H, U};
impl<const N: usize> ToNestedGraphqlNestedIdFilter for H<N> {
type Filter = NestedIdFilter<NestedIdWrapper<H<N>>>;
fn to_graphql_id_filter(self) -> Self::Filter {
let mut this = NestedIdFilter::new();
this.set_eq(Some(NestedIdWrapper(self)));
this
}
}
impl<const N: usize> ToNestedGraphqlNestedIdFilter for U<N> {
type Filter = NestedIdFilter<NestedIdWrapper<U<N>>>;
fn to_graphql_id_filter(self) -> Self::Filter {
let mut this = NestedIdFilter::new();
this.set_eq(Some(NestedIdWrapper(self)));
this
}
}
impl<const N: usize> ToNestedGraphqlNestedIdFilter for [u8; N] {
type Filter = NestedIdFilter<NestedIdWrapper<[u8; N]>>;
fn to_graphql_id_filter(self) -> Self::Filter {
let mut this = NestedIdFilter::new();
this.set_eq(Some(NestedIdWrapper(self)));
this
}
}
impl_as_graphql_filter! {bytea(
[u8; N],
H<N>,
U<N>
)}
impl_as_db_filter! {bytea(
[u8; N],
H<N>,
U<N>
)}
impl_as_graphql_filter! {option_bytea(
[u8; N],
H<N>,
U<N>
)}
impl_as_db_filter! {option_bytea(
[u8; N],
H<N>,
U<N>
)}
impl<const N: usize> super::ToDbFilter for Vec<H<N>> {
type Filter = super::ArrayFilter<H<N>>;
fn to_db_filter(self) -> Self::Filter {
super::ArrayFilter::from(self)
}
}
filter!(ByteaFilter: [ByteaOperator; 10],
extra_bounds: {},
extra_binds: {
Contains => bind_contains_bytea,
NotContains => bind_not_contains_bytea,
},
null { },
primitive {
0: Eq:eq:"",
1: Not:not:"not",
2: Gt:gt:"gt",
3: Gte:gte:"gte",
4: Lt:lt:"lt",
5: Lte:lte:"lte",
6: Contains:contains:"contains",
7: NotContains:not_contains:"not_contains",
},
primitives {
8: In:in_:"in",
9: NotIn:not_in:"not_in"
}
);
filter!(OptionalByteaFilter: [OptionalByteaOperator; 11],
extra_bounds: {},
extra_binds: {
Contains => bind_contains_bytea,
NotContains => bind_not_contains_bytea,
},
null { 10: Null:null:"null" },
primitive {
0: Eq:eq:"",
1: Not:not:"not",
2: Gt:gt:"gt",
3: Gte:gte:"gte",
4: Lt:lt:"lt",
5: Lte:lte:"lte",
6: Contains:contains:"contains",
7: NotContains:not_contains:"not_contains",
},
primitives {
8: In:in_:"in",
9: NotIn:not_in:"not_in"
}
);