use std::ops::{Deref, DerefMut};
use crate::rubase::ruresult::ru_result::RuResult;
use serde::{Deserialize, Serialize};
use crate::rubase::get_self::{GetSelf, GetSelfTrait};
#[derive(Serialize,Deserialize,Debug,Clone)]
pub struct PageResult<R> {
pub result: RuResult,
pub Data: Vec<R>,
pub PageSize: i32,
pub PageCurrent: i32,
pub Total: i32,
pub TotalPages: i32,
}
impl<R> PageResult<R> where R: Serialize {}
impl<R> GetSelfTrait<R> for PageResult<R> where R: Serialize+Clone {}
impl<R> Deref for PageResult<R> {
type Target = RuResult;
fn deref(&self) -> &Self::Target {
&self.result
}
}
impl<R> DerefMut for PageResult<R> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.result
}
}
impl<R> PageResult<R>
where
R: Serialize,
{
pub fn new() -> Self {
Self::default(vec![])
}
pub fn default(data: Vec<R>) -> Self {
Self::new_of(RuResult::new(), data, 10, 1, 0, 0)
}
pub fn new_of(
result: RuResult,
Data: Vec<R>,
PageSize: i32,
PageCurrent: i32,
Total: i32,
TotalPages: i32,
) -> Self {
Self {
result,
Data,
PageSize,
PageCurrent,
Total,
TotalPages,
}
}
pub fn with_page(&mut self, PageSize: i32, PageCurrent: i32) {
self.PageSize = PageSize;
self.PageCurrent = PageCurrent;
}
pub fn init(&mut self) {}
}