Skip to main content

canic_core/domain/
runtime.rs

1//! Module: domain::runtime
2//!
3//! Responsibility: define pure runtime value enums shared by runtime ops,
4//! status builders, and endpoint DTOs.
5//! Does not own: runtime status DTO structs, endpoint guards, or runtime
6//! mutation.
7//! Boundary: DTOs re-export these values to preserve the public API path while
8//! internal code imports them from the domain owner.
9
10use candid::CandidType;
11use serde::{Deserialize, Serialize};
12
13// CandidType supports explicit serde(rename) labels, but not rename_all. Keep
14// runtime introspection enum labels canonical and alias-free.
15
16///
17/// FailureSeverity
18///
19
20#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
21pub enum FailureSeverity {
22    #[serde(rename = "info")]
23    Info,
24    #[serde(rename = "warning")]
25    Warning,
26    #[serde(rename = "error")]
27    Error,
28    #[serde(rename = "critical")]
29    Critical,
30}
31
32///
33/// RuntimeFieldVisibility
34///
35
36#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
37pub enum RuntimeFieldVisibility {
38    #[serde(rename = "public_safe")]
39    PublicSafe,
40    #[serde(rename = "operator_only")]
41    OperatorOnly,
42    #[serde(rename = "controller_only")]
43    ControllerOnly,
44    #[serde(rename = "feature_gated")]
45    FeatureGated,
46    #[serde(rename = "disabled")]
47    Disabled,
48}
49
50///
51/// RuntimeCheckStatus
52///
53
54#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
55pub enum RuntimeCheckStatus {
56    #[serde(rename = "pass")]
57    Pass,
58    #[serde(rename = "warn")]
59    Warn,
60    #[serde(rename = "fail")]
61    Fail,
62    #[serde(rename = "not_evaluated")]
63    NotEvaluated,
64}
65
66///
67/// RuntimeDiagnosticSeverity
68///
69
70#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
71pub enum RuntimeDiagnosticSeverity {
72    #[serde(rename = "info")]
73    Info,
74    #[serde(rename = "warning")]
75    Warning,
76    #[serde(rename = "blocked")]
77    Blocked,
78    #[serde(rename = "unsupported")]
79    Unsupported,
80}
81
82///
83/// RuntimeStateDomainStatus
84///
85
86#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
87pub enum RuntimeStateDomainStatus {
88    #[serde(rename = "ok")]
89    Ok,
90    #[serde(rename = "warning")]
91    Warning,
92    #[serde(rename = "failing")]
93    Failing,
94    #[serde(rename = "not_evaluated")]
95    NotEvaluated,
96}
97
98///
99/// HealthStatus
100///
101
102#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
103pub enum HealthStatus {
104    #[serde(rename = "healthy")]
105    Healthy,
106    #[serde(rename = "degraded")]
107    Degraded,
108    #[serde(rename = "unhealthy")]
109    Unhealthy,
110    #[serde(rename = "unknown")]
111    Unknown,
112}
113
114///
115/// ReadinessStatus
116///
117
118#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
119pub enum ReadinessStatus {
120    #[serde(rename = "ready")]
121    Ready,
122    #[serde(rename = "degraded")]
123    Degraded,
124    #[serde(rename = "not_ready")]
125    NotReady,
126    #[serde(rename = "not_evaluated")]
127    NotEvaluated,
128}
129
130///
131/// RuntimeStatus
132///
133
134#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
135pub enum RuntimeStatus {
136    #[serde(rename = "ok")]
137    Ok,
138    #[serde(rename = "degraded")]
139    Degraded,
140    #[serde(rename = "failing")]
141    Failing,
142    #[serde(rename = "unknown")]
143    Unknown,
144}
145
146///
147/// TimerStatus
148///
149
150#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
151pub enum TimerStatus {
152    #[serde(rename = "healthy")]
153    Healthy,
154    #[serde(rename = "delayed")]
155    Delayed,
156    #[serde(rename = "failing")]
157    Failing,
158    #[serde(rename = "disabled")]
159    Disabled,
160    #[serde(rename = "not_registered")]
161    NotRegistered,
162    #[serde(rename = "unknown")]
163    Unknown,
164}
165
166///
167/// TimerMode
168///
169
170#[derive(Clone, Copy, Eq, Hash, Ord, PartialEq, PartialOrd)]
171#[remain::sorted]
172pub enum TimerMode {
173    Interval,
174    Once,
175}