use reifydb_value::value::{
Value,
identity::{IdentityId, IdentityKind},
value_type::ValueType,
};
use serde::{Deserialize, Serialize};
pub type RoleId = u64;
pub type IdentityAttributeId = u64;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Identity {
pub id: IdentityId,
pub name: String,
pub enabled: bool,
pub kind: IdentityKind,
}
impl Identity {
pub fn name(&self) -> &str {
&self.name
}
pub fn resolved_kind(&self) -> IdentityKind {
self.id.sentinel_kind().unwrap_or(self.kind)
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Role {
pub id: RoleId,
pub name: String,
}
impl Role {
pub fn name(&self) -> &str {
&self.name
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct GrantedRole {
pub identity: IdentityId,
pub role_id: RoleId,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct IdentityAttribute {
pub id: IdentityAttributeId,
pub name: String,
pub value_type: ValueType,
}
impl IdentityAttribute {
pub fn name(&self) -> &str {
&self.name
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct IdentityAttributeValue {
pub identity: IdentityId,
pub attribute: IdentityAttributeId,
pub value: Value,
}