Rewrite to rust

This commit is contained in:
2023-07-23 21:36:47 +02:00
parent 47b280c205
commit 4ec26ce4c0
49 changed files with 15881 additions and 2521 deletions

49
src/views/pagination.rs Normal file
View File

@@ -0,0 +1,49 @@
use serde::{Deserialize, Serialize};
#[derive(Deserialize)]
pub struct Pagination {
#[serde(default = "default_page")]
pub page: usize,
#[serde(default = "default_size")]
pub size: usize
}
fn default_page() -> usize { 1 }
fn default_size() -> usize { 50 }
impl Pagination {
pub fn skip(&self) -> i64 {
((self.page - 1) * self.size).try_into().unwrap()
}
pub fn take(&self) -> i64 {
self.size.try_into().unwrap()
}
}
#[derive(Serialize)]
pub struct Page<T> where T: Serialize {
pub items: Vec<T>,
pub total: usize,
pub page: usize,
pub size: usize,
pub pages: usize
}
impl<T> Page<T> where T: Serialize {
pub fn create(
items: Vec<T>,
items_count: i64,
pagination: Pagination
) -> Self {
Self {
items,
total: items_count.try_into().unwrap(),
page: pagination.page,
size: pagination.size,
pages: (items_count as f64 / pagination.size as f64).ceil() as usize
}
}
}