Skip to main content

made_core/value_objects/
execution_outcome.rs

1use serde::{Deserialize, Serialize};
2
3use super::{Attributes, DurationMs, ExecutionId, ExecutionStatus};
4
5/// Final result returned by an execution adapter.
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7pub struct ExecutionOutcome {
8    id: ExecutionId,
9    status: ExecutionStatus,
10    duration: DurationMs,
11    output: Attributes,
12}
13
14impl ExecutionOutcome {
15    #[must_use]
16    pub const fn new(
17        id: ExecutionId,
18        status: ExecutionStatus,
19        duration: DurationMs,
20        output: Attributes,
21    ) -> Self {
22        Self {
23            id,
24            status,
25            duration,
26            output,
27        }
28    }
29
30    #[must_use]
31    pub const fn id(&self) -> &ExecutionId {
32        &self.id
33    }
34
35    #[must_use]
36    pub const fn status(&self) -> ExecutionStatus {
37        self.status
38    }
39
40    #[must_use]
41    pub const fn duration(&self) -> DurationMs {
42        self.duration
43    }
44
45    #[must_use]
46    pub const fn output(&self) -> &Attributes {
47        &self.output
48    }
49}