cido 0.2.0

Core traits and implementations for indexing with cido
Documentation
use crate::types::Bytes;
use chrono::{DateTime, Local, NaiveDate, NaiveDateTime, NaiveTime, Utc};
use sqlx::types::{BigDecimal, Decimal};

use super::{Filter, Operator};
use crate::helper_macros::{is_none, is_none_range};

impl_as_graphql_id_filter!(
  bool,
  i8,
  i16,
  i32,
  isize,
  i64,
  u8,
  u16,
  u32,
  usize,
  u64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes
);

impl_as_graphql_filter! {base(
  bool,
  i8,
  i16,
  i32,
  isize,
  i64,
  u8,
  u16,
  u32,
  usize,
  u64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes
)}

impl_as_graphql_filter! {option(
  bool,
  i8,
  i16,
  i32,
  isize,
  i64,
  u8,
  u16,
  u32,
  usize,
  u64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes
)}

impl_as_db_filter! {base(
  bool,
  i8,
  i16,
  i32,
  isize,
  i64,
  u8,
  u16,
  u32,
  usize,
  u64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes,
)}

impl_as_graphql_filter! {array(
  bool,
  i8,
  i16,
  i32,
  i64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes
)}

impl_as_graphql_filter! {optional_array(
  bool,
  i8,
  i16,
  i32,
  i64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes
)}

impl_as_db_filter! {option(
  bool,
  i8,
  i16,
  i32,
  isize,
  i64,
  u8,
  u16,
  u32,
  usize,
  u64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes
)}

impl_as_db_filter! {array(
  bool,
  i8,
  i16,
  i32,
  i64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes,
)}

impl_as_db_filter! {optional_array(
  bool,
  i8,
  i16,
  i32,
  i64,
  f32,
  f64,
  Decimal,
  BigDecimal,
  crate::types::BigDecimal,
  crate::types::BigInt,
  DateTime<Utc>,
  DateTime<Local>,
  NaiveDate,
  NaiveTime,
  NaiveDateTime,
  Vec<u8>,
  Bytes,
)}

filter!(BaseFilter: [BaseOperator; 8],
  extra_bounds: {},
  extra_binds: {},
  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"
  },
  primitives {
    6: In:in_:"in",
    7: NotIn:not_in:"not_in"
  }
);

filter!(OptionalBaseFilter: [OptionalBaseOperator; 9],
  extra_bounds: {},
  extra_binds: {},
  null { 8: 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"
  },
  primitives {
    6: In:in_:"in",
    7: NotIn:not_in:"not_in"
  }
);