use serde::{Deserialize, Serialize}; pub const DEFAULT_PAGE: u64 = 0; pub const DEFAULT_PER_PAGE: u64 = 25; #[derive(Deserialize)] pub struct Query { pub page: Option, pub per_page: Option, } #[derive(Serialize)] pub struct PaginatedResponse where T: for<'de> Serialize, { pub page: u64, pub per_page: u64, pub total_pages: u64, pub count: usize, pub items: Vec, } impl Query { pub fn res Serialize>( self, total_pages: u64, items: Vec, ) -> PaginatedResponse { PaginatedResponse { page: self.page.unwrap_or(DEFAULT_PAGE), per_page: self.per_page.unwrap_or(DEFAULT_PER_PAGE), total_pages, count: items.len(), items, } } }