celcat/fetchable/
resources.rs1use 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}