cido 0.2.0

Core traits and implementations for indexing with cido
Documentation
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"
    }
);