solti_api/grpc/convert/
condition.rs1use solti_model::{ConditionStatus, TaskCondition};
6
7use super::time::system_time_to_ms;
8use crate::error::ApiError;
9use crate::proto_api;
10
11impl TryFrom<ConditionStatus> for proto_api::ConditionStatus {
12 type Error = ApiError;
13
14 fn try_from(status: ConditionStatus) -> Result<Self, Self::Error> {
15 Ok(match status {
16 ConditionStatus::Unknown => Self::Unknown,
17 ConditionStatus::True => Self::True,
18 ConditionStatus::False => Self::False,
19 _ => {
20 return Err(ApiError::Internal(
21 "handler returned an unsupported condition status".into(),
22 ));
23 }
24 })
25 }
26}
27
28impl TryFrom<TaskCondition> for proto_api::TaskCondition {
29 type Error = ApiError;
30
31 fn try_from(condition: TaskCondition) -> Result<Self, Self::Error> {
32 let (condition_type, status, observed_generation, transition_time, reason, message) =
33 condition.into_parts();
34 Ok(Self {
35 r#type: condition_type.to_string(),
36 status: proto_api::ConditionStatus::try_from(status)? as i32,
37 observed_generation,
38 last_transition_time: system_time_to_ms(transition_time)?,
39 reason,
40 message,
41 })
42 }
43}