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}