Skip to main content

coil_core/manifest/
ops.rs

1use super::*;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum ReportFormat {
5    Csv,
6    Json,
7    Pdf,
8}
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub enum ReportSensitivity {
12    Public,
13    Internal,
14    Restricted,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq)]
18pub enum ReportDeliveryMode {
19    PublicObjectStore,
20    SignedUrl,
21    InternalOnly,
22}
23
24#[derive(Debug, Clone, PartialEq, Eq)]
25pub struct ReportDefinition {
26    pub id: String,
27    pub title: String,
28    pub description: Option<String>,
29    pub required_capability: Capability,
30    pub format: ReportFormat,
31    pub sensitivity: ReportSensitivity,
32    pub delivery_mode: ReportDeliveryMode,
33    pub export_prefix: String,
34    pub retry_policy: RetryPolicy,
35}
36
37impl ReportDefinition {
38    pub fn new(
39        id: impl Into<String>,
40        title: impl Into<String>,
41        description: Option<String>,
42        required_capability: Capability,
43        format: ReportFormat,
44        sensitivity: ReportSensitivity,
45        delivery_mode: ReportDeliveryMode,
46        export_prefix: impl Into<String>,
47        retry_policy: RetryPolicy,
48    ) -> Self {
49        Self {
50            id: id.into(),
51            title: title.into(),
52            description,
53            required_capability,
54            format,
55            sensitivity,
56            delivery_mode,
57            export_prefix: export_prefix.into(),
58            retry_policy,
59        }
60    }
61}
62
63#[derive(Debug, Clone, Copy, PartialEq, Eq)]
64pub enum BulkOperationKind {
65    Publish,
66    Unpublish,
67    Reindex,
68    Export,
69    Cancel,
70    CheckIn,
71    Custom,
72}
73
74#[derive(Debug, Clone, Copy, PartialEq, Eq)]
75pub enum BulkOperationScope {
76    Cms,
77    Commerce,
78    Memberships,
79    Events,
80    Media,
81    Search,
82    System,
83}
84
85#[derive(Debug, Clone, PartialEq, Eq)]
86pub struct BulkOperationDefinition {
87    pub id: String,
88    pub title: String,
89    pub description: Option<String>,
90    pub required_capability: Capability,
91    pub kind: BulkOperationKind,
92    pub scope: BulkOperationScope,
93    pub retry_policy: RetryPolicy,
94    pub max_items: Option<usize>,
95    pub requires_idempotency_key: bool,
96}
97
98impl BulkOperationDefinition {
99    pub fn new(
100        id: impl Into<String>,
101        title: impl Into<String>,
102        description: Option<String>,
103        required_capability: Capability,
104        kind: BulkOperationKind,
105        scope: BulkOperationScope,
106        retry_policy: RetryPolicy,
107        max_items: Option<usize>,
108        requires_idempotency_key: bool,
109    ) -> Self {
110        Self {
111            id: id.into(),
112            title: title.into(),
113            description,
114            required_capability,
115            kind,
116            scope,
117            retry_policy,
118            max_items,
119            requires_idempotency_key,
120        }
121    }
122}