bo4e_core/enums/
market_role.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))]
10#[cfg_attr(feature = "json-schema", schemars(rename = "Marktrolle"))]
11#[non_exhaustive]
12pub enum MarketRole {
13 #[serde(rename = "BTR")]
15 TechnicalResourceOperator,
16
17 #[serde(rename = "BIKO")]
19 BalanceCoordinator,
20
21 #[serde(rename = "BKV")]
23 BalanceResponsibleParty,
24
25 #[serde(rename = "DP")]
27 DataProvider,
28
29 #[serde(rename = "EIV")]
31 DeploymentResponsible,
32
33 #[serde(rename = "ESA")]
35 EnergyServiceProvider,
36
37 #[serde(rename = "KN")]
39 CapacityUser,
40
41 #[serde(rename = "LF")]
43 Supplier,
44
45 #[serde(rename = "MGV")]
47 MarketAreaManager,
48
49 #[serde(rename = "MSB")]
51 MeteringPointOperator,
52
53 #[serde(rename = "NB")]
55 NetworkOperator,
56
57 #[serde(rename = "RB")]
59 RegisterOperator,
60
61 #[serde(rename = "UENB")]
63 TransmissionSystemOperator,
64}
65
66impl MarketRole {
67 pub fn german_name(&self) -> &'static str {
69 match self {
70 Self::TechnicalResourceOperator => "Betreiber einer technischen Ressource",
71 Self::BalanceCoordinator => "Bilanzkoordinator",
72 Self::BalanceResponsibleParty => "Bilanzkreisverantwortlicher",
73 Self::DataProvider => "Data Provider",
74 Self::DeploymentResponsible => "Einsatzverantwortlicher",
75 Self::EnergyServiceProvider => "Energieserviceanbieter des Anschlussnutzers",
76 Self::CapacityUser => "Kapazitaetsnutzer",
77 Self::Supplier => "Lieferant",
78 Self::MarketAreaManager => "Marktgebietsverantwortlicher",
79 Self::MeteringPointOperator => "Messstellenbetreiber",
80 Self::NetworkOperator => "Netzbetreiber",
81 Self::RegisterOperator => "Registerbetreiber",
82 Self::TransmissionSystemOperator => "Uebertragungsnetzbetreiber",
83 }
84 }
85}
86
87#[cfg(test)]
88mod tests {
89 use super::*;
90
91 #[test]
92 fn test_serialize() {
93 assert_eq!(
94 serde_json::to_string(&MarketRole::NetworkOperator).unwrap(),
95 r#""NB""#
96 );
97 assert_eq!(
98 serde_json::to_string(&MarketRole::Supplier).unwrap(),
99 r#""LF""#
100 );
101 }
102
103 #[test]
104 fn test_deserialize() {
105 assert_eq!(
106 serde_json::from_str::<MarketRole>(r#""MSB""#).unwrap(),
107 MarketRole::MeteringPointOperator
108 );
109 assert_eq!(
110 serde_json::from_str::<MarketRole>(r#""BKV""#).unwrap(),
111 MarketRole::BalanceResponsibleParty
112 );
113 }
114
115 #[test]
116 fn test_roundtrip() {
117 for role in [
118 MarketRole::TechnicalResourceOperator,
119 MarketRole::BalanceCoordinator,
120 MarketRole::BalanceResponsibleParty,
121 MarketRole::DataProvider,
122 MarketRole::DeploymentResponsible,
123 MarketRole::EnergyServiceProvider,
124 MarketRole::CapacityUser,
125 MarketRole::Supplier,
126 MarketRole::MarketAreaManager,
127 MarketRole::MeteringPointOperator,
128 MarketRole::NetworkOperator,
129 MarketRole::RegisterOperator,
130 MarketRole::TransmissionSystemOperator,
131 ] {
132 let json = serde_json::to_string(&role).unwrap();
133 let parsed: MarketRole = serde_json::from_str(&json).unwrap();
134 assert_eq!(role, parsed);
135 }
136 }
137}