celcat/fetchable/
resources.rs

1use serde::{Deserialize, Serialize};
2
3use super::Fetchable;
4use crate::entities::ResourceType;
5
6#[derive(Debug, Clone, PartialEq, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct Resource<R: ResourceType> {
9    pub id: R::Id,
10    pub text: String,
11    pub dept: String,
12}
13
14#[derive(Debug, Clone, PartialEq, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct ResourceList<R: ResourceType> {
17    pub total: u64,
18    #[serde(bound(deserialize = "R: ResourceType"))]
19    pub results: Vec<Resource<R>>,
20}
21
22#[derive(Debug, Clone, PartialEq, Serialize)]
23#[serde(rename_all = "camelCase")]
24pub struct ResourceListRequest<R: ResourceType> {
25    pub my_resources: bool,
26    pub search_term: String,
27    pub page_size: u64,
28    pub page_number: u64,
29    pub res_type: R,
30}
31
32impl<R> Fetchable for ResourceList<R>
33where
34    R: ResourceType,
35{
36    type Request = ResourceListRequest<R>;
37
38    const METHOD_NAME: &'static str = "ReadResourceListItems";
39}