kmp_plugin_api/application/dto/
derivation_operand.rs1use serde::{Deserialize, Serialize};
2
3use crate::domain::interpreted_value::InterpretedValue;
4use crate::domain::operand_label::OperandLabel;
5use crate::domain::operand_role::OperandRole;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8pub struct DerivationOperand {
9 pub ref_id: String,
10 pub label: OperandLabel,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub role: Option<OperandRole>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub entity: Option<String>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub value: Option<InterpretedValue>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub raw: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub reason: Option<String>,
21}
22
23impl DerivationOperand {
24 pub fn included(ref_id: impl Into<String>, value: InterpretedValue) -> Self {
25 Self {
26 ref_id: ref_id.into(),
27 label: OperandLabel::Include,
28 role: None,
29 entity: None,
30 value: Some(value),
31 raw: None,
32 reason: None,
33 }
34 }
35
36 pub fn with_role(mut self, role: OperandRole) -> Self {
37 self.role = Some(role);
38 self
39 }
40
41 pub fn with_entity(mut self, entity: impl Into<String>) -> Self {
42 self.entity = Some(entity.into());
43 self
44 }
45}