kanidm_proto/
config.rs

1use serde::Deserialize;
2use std::{fmt, fmt::Display, str::FromStr};
3
4#[derive(Debug, Deserialize, Clone, Copy, Default, Eq, PartialEq)]
5pub enum ServerRole {
6    #[default]
7    WriteReplica,
8    WriteReplicaNoUI,
9    ReadOnlyReplica,
10}
11
12impl Display for ServerRole {
13    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14        match self {
15            ServerRole::WriteReplica => f.write_str("write replica"),
16            ServerRole::WriteReplicaNoUI => f.write_str("write replica (no ui)"),
17            ServerRole::ReadOnlyReplica => f.write_str("read only replica"),
18        }
19    }
20}
21
22impl FromStr for ServerRole {
23    type Err = &'static str;
24
25    fn from_str(s: &str) -> Result<Self, Self::Err> {
26        match s {
27            "write_replica" => Ok(ServerRole::WriteReplica),
28            "write_replica_no_ui" => Ok(ServerRole::WriteReplicaNoUI),
29            "read_only_replica" => Ok(ServerRole::ReadOnlyReplica),
30            _ => Err("Must be one of write_replica, write_replica_no_ui, read_only_replica"),
31        }
32    }
33}