Skip to main content

zerobox_protocol/
models.rs

1use schemars::JsonSchema;
2use serde::Deserialize;
3use serde::Serialize;
4use ts_rs::TS;
5use zerobox_utils_absolute_path::AbsolutePathBuf;
6
7#[derive(Debug, Clone, Default, Eq, Hash, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
8pub struct FileSystemPermissions {
9    pub read: Option<Vec<AbsolutePathBuf>>,
10    pub write: Option<Vec<AbsolutePathBuf>>,
11}
12
13impl FileSystemPermissions {
14    pub fn is_empty(&self) -> bool {
15        self.read.is_none() && self.write.is_none()
16    }
17}
18
19#[derive(Debug, Clone, Default, Eq, Hash, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
20pub struct NetworkPermissions {
21    pub enabled: Option<bool>,
22}
23
24impl NetworkPermissions {
25    pub fn is_empty(&self) -> bool {
26        self.enabled.is_none()
27    }
28}
29
30#[derive(Debug, Clone, Default, Eq, Hash, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
31pub struct PermissionProfile {
32    pub network: Option<NetworkPermissions>,
33    pub file_system: Option<FileSystemPermissions>,
34}
35
36impl PermissionProfile {
37    pub fn is_empty(&self) -> bool {
38        self.network.is_none() && self.file_system.is_none()
39    }
40}