1pub use libsql_orm_macros::Model;
6
7#[macro_export]
9macro_rules! filter {
10 ($column:expr, $op:expr, $value:expr) => {
11 $crate::Filter::new($column, $op, $crate::FilterValue::Single($value.into()))
12 };
13
14 ($column:expr, in, $values:expr) => {
15 $crate::Filter::in_values($column, $values)
16 };
17
18 ($column:expr, not_in, $values:expr) => {
19 $crate::Filter::not_in_values($column, $values)
20 };
21
22 ($column:expr, between, $min:expr, $max:expr) => {
23 $crate::Filter::between($column, $min, $max)
24 };
25
26 ($column:expr, not_between, $min:expr, $max:expr) => {
27 $crate::Filter::not_between($column, $min, $max)
28 };
29
30 ($column:expr, is_null) => {
31 $crate::Filter::is_null($column)
32 };
33
34 ($column:expr, is_not_null) => {
35 $crate::Filter::is_not_null($column)
36 };
37}
38
39#[macro_export]
41macro_rules! sort {
42 ($column:expr, asc) => {
43 $crate::Sort::asc($column)
44 };
45
46 ($column:expr, desc) => {
47 $crate::Sort::desc($column)
48 };
49
50 ($column:expr) => {
51 $crate::Sort::asc($column)
52 };
53}
54
55#[macro_export]
57macro_rules! search {
58 ($query:expr, $($columns:expr),*) => {
59 $crate::SearchFilter::new($query, vec![$($columns),*])
60 };
61}
62
63#[macro_export]
65macro_rules! pagination {
66 ($page:expr, $per_page:expr) => {
67 $crate::Pagination::new($page, $per_page)
68 };
69
70 ($page:expr) => {
71 $crate::Pagination::new($page, 20)
72 };
73}
74
75#[macro_export]
77macro_rules! query {
78 ($table:expr) => {
79 $crate::QueryBuilder::new($table)
80 };
81}
82
83#[macro_export]
85macro_rules! filter_op {
86 (and, $($filters:expr),*) => {
87 $crate::FilterOperator::and(vec![$($filters),*])
88 };
89
90 (or, $($filters:expr),*) => {
91 $crate::FilterOperator::or(vec![$($filters),*])
92 };
93
94 (not, $filter:expr) => {
95 $crate::FilterOperator::not($filter)
96 };
97
98 ($filter:expr) => {
99 $crate::FilterOperator::Single($filter)
100 };
101}