OneLauncher-Cracked/packages/core/src/utils/pagination.rs
2025-07-15 21:34:23 +03:00

31 lines
800 B
Rust

use std::fmt::Debug;
use std::marker::Send;
use serde::{Deserialize, Serialize};
#[onelauncher_macro::specta]
#[derive(Clone, Serialize, Deserialize)]
pub struct Paginated<T>
where T: Clone + Serialize + Send {
pub total: usize,
pub offset: usize,
pub limit: usize,
pub items: Vec<T>,
}
impl<T: Clone + Serialize + Send> Debug for Paginated<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Paginated")
.field("total", &self.total)
.field("offset", &self.offset)
.field("limit", &self.limit)
.field("items", &self.items.len())
.finish()
}
}
impl <T: Clone + Serialize + Send> Paginated<T> {
#[must_use]
pub const fn new(total: usize, offset: usize, limit: usize, items: Vec<T>) -> Self {
Self { total, offset, limit, items }
}
}