#[macro_export]
macro_rules! lazy_query {
($data:expr, $type:ty => $($tail:tt)*) => {{
$crate::LazyQuery::new($data)
}};
($data:expr) => {{
$crate::LazyQuery::new($data)
}};
}
#[macro_export]
macro_rules! query {
($data:expr) => {{
$crate::Query::new($data)
}};
}
#[macro_export]
macro_rules! filter {
($field:expr, $pred:expr) => {{
|item| $field.get(item).map_or(false, $pred)
}};
}
#[macro_export]
macro_rules! collect_lazy {
($data:expr) => {{
$crate::LazyQuery::new($data).collect()
}};
}
#[macro_export]
macro_rules! filter_collect {
($data:expr, $field:expr, $pred:expr) => {{
$crate::LazyQuery::new($data)
.where_($field, $pred)
.collect()
}};
}
#[macro_export]
macro_rules! count_where {
($data:expr, $field:expr, $pred:expr) => {{
$crate::LazyQuery::new($data)
.where_($field, $pred)
.count()
}};
}
#[macro_export]
macro_rules! find_first {
($data:expr, $field:expr, $pred:expr) => {{
$crate::LazyQuery::new($data)
.where_($field, $pred)
.first()
}};
}
#[macro_export]
macro_rules! exists_where {
($data:expr, $field:expr, $pred:expr) => {{
$crate::LazyQuery::new($data)
.where_($field, $pred)
.any()
}};
}
#[macro_export]
macro_rules! paginate {
($data:expr, page: $page:expr, size: $size:expr) => {{
$crate::LazyQuery::new($data)
.skip_lazy($page * $size)
.take_lazy($size)
.collect()
}};
}
#[macro_export]
macro_rules! sum_where {
($data:expr, $sum_field:expr, $filter_field:expr, $pred:expr) => {{
$crate::LazyQuery::new($data)
.where_($filter_field, $pred)
.sum_by($sum_field)
}};
($data:expr, $sum_field:expr) => {{
$crate::LazyQuery::new($data)
.sum_by($sum_field)
}};
}
#[macro_export]
macro_rules! avg_where {
($data:expr, $avg_field:expr, $filter_field:expr, $pred:expr) => {{
$crate::LazyQuery::new($data)
.where_($filter_field, $pred)
.avg_by($avg_field)
}};
($data:expr, $avg_field:expr) => {{
$crate::LazyQuery::new($data)
.avg_by($avg_field)
}};
}
#[macro_export]
macro_rules! select_all {
($data:expr, $field:expr) => {{
$crate::LazyQuery::new($data)
.select_lazy($field)
.collect()
}};
}
#[macro_export]
macro_rules! select_where {
($data:expr, $select_field:expr, $filter_field:expr, $pred:expr) => {{
$crate::LazyQuery::new($data)
.where_($filter_field, $pred)
.select_lazy($select_field)
.collect()
}};
}