zerobox_protocol/
models.rs1use 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}