cloudreve_api/api/v4/models/
storage.rs

1//! Storage policy and entity models for Cloudreve API v4
2
3use serde::{Deserialize, Serialize};
4
5/// Storage policy information
6#[derive(Debug, Serialize, Deserialize, Clone)]
7pub struct StoragePolicy {
8    pub id: String,
9    pub name: String,
10    #[serde(rename = "type")]
11    pub type_: String,
12    pub max_size: u64,
13    #[serde(default)]
14    pub allowed_suffix: Option<Vec<String>>,
15    #[serde(default)]
16    pub denied_suffix: Option<Vec<String>>,
17    #[serde(default)]
18    pub allowed_name_regexp: Option<String>,
19    #[serde(default)]
20    pub denied_name_regexp: Option<String>,
21    #[serde(default)]
22    pub relay: Option<bool>,
23    #[serde(default)]
24    pub weight: Option<u64>,
25    #[serde(default)]
26    pub children: Option<Vec<StoragePolicy>>,
27    #[serde(default)]
28    pub chunk_concurrency: Option<u32>,
29}
30
31/// Extended storage policy
32#[derive(Debug, Serialize, Deserialize, Clone)]
33pub struct NewStoragePolicy {
34    pub id: String,
35    pub name: String,
36    #[serde(rename = "type")]
37    pub policy_type: StoragePolicyType,
38    pub allowed_suffix: Option<Vec<String>>,
39    pub denied_suffix: Option<Vec<String>>,
40    pub allowed_name_regexp: Option<String>,
41    pub denied_name_regexp: Option<String>,
42    pub max_size: f64,
43    pub relay: Option<bool>,
44    pub weight: Option<f64>,
45    pub children: Option<Vec<NewStoragePolicy>>,
46    pub chunk_concurrency: Option<i32>,
47}
48
49/// Storage policy type enum
50#[derive(Debug, Serialize, Deserialize, Clone)]
51pub enum StoragePolicyType {
52    #[serde(rename = "local")]
53    Local,
54    #[serde(rename = "qiniu")]
55    Qiniu,
56    #[serde(rename = "upyun")]
57    Upyun,
58    #[serde(rename = "oss")]
59    Oss,
60    #[serde(rename = "cos")]
61    Cos,
62    #[serde(rename = "s3")]
63    S3,
64    #[serde(rename = "onedrive")]
65    Onedrive,
66    #[serde(rename = "remote")]
67    Remote,
68    #[serde(rename = "obs")]
69    Obs,
70    #[serde(rename = "load_balance")]
71    LoadBalance,
72    #[serde(rename = "ks3")]
73    KS3,
74}
75
76/// Storage entity
77#[derive(Debug, Serialize, Deserialize, Clone)]
78pub struct NewEntity {
79    pub id: String,
80    pub size: i64,
81    pub r#type: EntityType,
82    pub created_at: String,
83    pub storage_policy: Option<NewStoragePolicy>,
84    pub created_by: super::auth::NewUser,
85}
86
87/// Entity type enum
88#[derive(Debug, Serialize, Deserialize, Clone)]
89pub enum EntityType {
90    #[serde(rename = "0")]
91    Primary = 0,
92    #[serde(rename = "1")]
93    Secondary = 1,
94    #[serde(rename = "2")]
95    Temporary = 2,
96}
97
98/// Direct download link
99#[derive(Debug, Serialize, Deserialize, Clone)]
100pub struct DirectLink {
101    pub id: String,
102    pub url: String,
103    pub downloaded: f64,
104    pub created_at: String,
105}
106
107/// Node information
108#[derive(Debug, Serialize, Deserialize)]
109pub struct Node {
110    pub id: u64,
111    pub name: String,
112    pub created_at: String,
113}