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}