libsql_orm/
macros.rs

1// This module contains the macro implementations
2// The actual macro is implemented in a separate crate (libsql-orm-macros)
3
4/// Re-export the Model macro from the macros crate
5pub use libsql_orm_macros::Model;
6
7/// Helper macro for creating filter conditions
8#[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/// Helper macro for creating sort specifications
40#[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/// Helper macro for creating search filters
56#[macro_export]
57macro_rules! search {
58    ($query:expr, $($columns:expr),*) => {
59        $crate::SearchFilter::new($query, vec![$($columns),*])
60    };
61}
62
63/// Helper macro for creating pagination
64#[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/// Helper macro for creating query builders
76#[macro_export]
77macro_rules! query {
78    ($table:expr) => {
79        $crate::QueryBuilder::new($table)
80    };
81}
82
83/// Helper macro for creating filter operators
84#[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}