use crate::data::entity_manager::EntityManager; use crate::utils::string_utils::apply_env_vars; #[derive(Clone, Debug, serde::Serialize, serde::Deserialize, Eq, PartialEq)] pub struct ClientID(pub String); #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] pub struct Client { pub id: ClientID, pub name: String, pub description: String, pub secret: String, pub redirect_uri: String, } impl PartialEq for Client { fn eq(&self, other: &Self) -> bool { self.id.eq(&other.id) } } impl Eq for Client {} pub type ClientManager = EntityManager; impl EntityManager { pub fn find_by_id(&self, u: &ClientID) -> Option { for entry in self.iter() { if entry.id.eq(u) { return Some(entry.clone()); } } None } pub fn apply_environment_variables(&mut self) { for c in self.iter_mut() { c.id = ClientID(apply_env_vars(&c.id.0)); c.name = apply_env_vars(&c.name); c.description = apply_env_vars(&c.description); c.secret = apply_env_vars(&c.secret); c.redirect_uri = apply_env_vars(&c.redirect_uri); } } }