use serde::{Deserialize, Serialize};
use typed_builder::TypedBuilder;
#[derive(Debug, Default, Eq, PartialEq, Clone, Copy, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum ObjType {
#[default]
EMail,
Url,
Telephone,
}
#[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize, TypedBuilder)]
#[serde(rename_all = "lowercase")]
pub struct Obj {
pub r#type: ObjType,
#[builder(setter(into))]
pub identity: String,
pub hashed: bool,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
#[builder(default)]
#[builder(setter(into))]
pub salt: Option<String>,
}
impl Obj {
pub fn new<S: Into<String>>(r#type: ObjType, identity: S, hashed: bool) -> Self {
Self {
r#type,
identity: identity.into(),
hashed,
salt: None,
}
}
}