Skip to main content

framework_cqrs_lib/cqrs/models/
jsonapi.rs

1use serde::{Deserialize, Serialize};
2use utoipa::ToSchema;
3
4use crate::cqrs::models::views::LinkView;
5
6#[derive(Serialize, Deserialize, Clone, ToSchema)]
7pub struct ManyView<T>
8where
9    T: Serialize + Clone,
10{
11    #[schema(example = "[]")]
12    pub data: Vec<T>,
13    pub meta: Option<PaginationView>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub links: Option<LinkView>,
16}
17
18#[derive(Serialize, Deserialize, Clone, ToSchema)]
19pub struct PaginationView {
20    #[serde(rename = "totalPages")]
21    pub total_pages: usize,
22    #[serde(rename = "totalRecords")]
23    pub total_records: usize,
24    pub page: PageView,
25}
26
27#[derive(Serialize, Deserialize, Clone, ToSchema)]
28pub struct PageView {
29    pub number: usize,
30    pub size: usize,
31}
32
33pub trait CanBeView<DATAVIEW> {
34    fn to_view(&self) -> DATAVIEW;
35}
36
37pub trait CanGetTypee {
38    fn get_type(&self) -> String;
39}