assemblyline_models/messages/
changes.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, strum::FromRepr, strum::EnumIs, PartialEq, Eq, Clone, Copy)]
6#[repr(u8)]
7pub enum Operation {
8 Added = 1,
9 Removed = 2,
10 Modified = 3,
11 Incompatible = 4
12}
13
14impl Serialize for Operation {
15 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
16 where
17 S: serde::Serializer {
18 (*self as u8).serialize(serializer)
19 }
20}
21
22impl<'de> Deserialize<'de> for Operation {
23 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
24 where
25 D: serde::Deserializer<'de> {
26 let value = u8::deserialize(deserializer)?;
27 Self::from_repr(value).ok_or(serde::de::Error::custom("could not read service change operation"))
28 }
29}
30
31#[derive(Debug, Serialize, Deserialize)]
32pub struct ServiceChange {
33 pub name: String,
34 pub operation: Operation,
35}
36
37#[derive(Debug, Serialize, Deserialize)]
38pub struct HeuristicChange {
39 pub service_name: String,
40 pub operation: Operation,
41}
42
43
44