framework_cqrs_lib/cqrs/models/
jsonapi.rs1use 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}