1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
pub use avantis_utils_derive::PaginatedQuery;

// Example:
// uncomment this to try
//
// #[derive(Default, Debug, PartialEq, PaginatedQuery)]
// struct Foo {
//     #[limit(default = 100)]
//     pub limit_t: Option<i32>,
//     #[offset(default = 0)]
//     pub offset_t: Option<i32>,
// }

pub trait PaginatedQuery {
    fn limit(&self) -> i32;
    fn offset(&self) -> i32;
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_input() {
        #[derive(Default, Debug, PartialEq, PaginatedQuery)]
        struct Input {
            #[limit(default = 100)]
            pub limit_t: Option<i32>,
            #[offset(default = 0)]
            pub offset_t: Option<i32>,
        }

        let input = Input::default();

        assert_eq!(100, input.limit());
        assert_eq!(0, input.offset());
    }
}