mediaflow_core/
folders.rs

1use serde::{Deserialize, Serialize};
2
3/// Represents a `/1/folder/[FOLDERID]` entity
4///
5/// Fields fetched from the API can be overridden using this trait. The most convenient
6/// way to do so is using the derive macro:
7///
8///     use mediaflow::MediaflowFolder;
9///     #[derive(MediaflowFolder)]
10///     struct MiniFolder {
11///         pub id: u32,
12///         pub name: String,
13///     }
14pub trait MediaflowFolder {}
15
16#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase")]
18pub struct FolderFull {
19    pub id: u32,
20    pub name: String,
21    #[serde(rename = "type")]
22    pub type_: u32,
23    pub depth: u16,
24    pub parent: Option<u32>,
25    pub created: String,
26    pub created_by: u32,
27    // pub index_words: Vec<...>,
28    pub has_children: bool,
29    pub archived: bool,
30    pub view_layout: String,
31    pub separator: bool,
32    pub parents: Option<Vec<ParentFolder>>,
33    // pub custom_fields: ...,
34}
35impl MediaflowFolder for FolderFull {}
36
37#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct FolderId {
40    pub id: u32,
41}
42impl MediaflowFolder for FolderId {}
43
44#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
45#[serde(rename_all = "camelCase")]
46pub struct ParentFolder {
47    pub id: u32,
48    pub name: String,
49    #[serde(rename = "type")]
50    pub type_: u32,
51    pub depth: u16,
52    pub parent: Option<u32>,
53    pub has_children: bool,
54}
55impl MediaflowFolder for ParentFolder {}