1use serde_with::{DeserializeFromStr, SerializeDisplay};
2use strum::{Display, EnumString};
3
4#[derive(
5 Debug, Copy, Clone, PartialEq, EnumString, Display, SerializeDisplay, DeserializeFromStr, Eq,
6)]
7pub enum BackendType {
8 #[strum(ascii_case_insensitive, serialize = "kv")]
9 Kv,
10 #[strum(ascii_case_insensitive, serialize = "psql")]
11 Postgres,
12 #[strum(ascii_case_insensitive, serialize = "system")]
13 System,
14 #[strum(ascii_case_insensitive, serialize = "userpass")]
15 Userpass,
16}
17
18#[derive(
19 Debug, Copy, Clone, PartialEq, Eq, EnumString, Display, SerializeDisplay, DeserializeFromStr,
20)]
21pub enum BackendCategory {
22 #[strum(ascii_case_insensitive, serialize = "secret")]
23 Logical,
24 #[strum(ascii_case_insensitive, serialize = "auth")]
25 Credential,
26}
27
28impl From<BackendType> for BackendCategory {
29 fn from(value: BackendType) -> Self {
30 match value {
31 BackendType::Kv | BackendType::Postgres | BackendType::System => {
32 BackendCategory::Logical
33 }
34 BackendType::Userpass => BackendCategory::Credential,
35 }
36 }
37}