covert_types/
backend.rs

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}