anycms_core/
pagination.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(rename_all = "camelCase")]
6pub struct ResultPagination {
7 pub total: i64,
8 pub page: i64,
9 pub page_size: i64,
10 pub current_page: i64,
11}
12
13impl ResultPagination {
14 pub fn new(total: i64, page: i64, page_size: i64) -> Self {
16 Self {
17 total,
18 page,
19 page_size,
20 current_page: page,
21 }
22 }
23
24 pub fn total_pages(&self) -> i64 {
26 if self.page_size <= 0 {
27 return 0;
28 }
29 (self.total + self.page_size - 1) / self.page_size
30 }
31
32 pub fn has_next(&self) -> bool {
34 self.page < self.total_pages()
35 }
36
37 pub fn has_prev(&self) -> bool {
39 self.page > 1
40 }
41}