use std::sync::Arc;
use derive_more::derive::Display;
use serde::Serialize;
use uuid7::Uuid;
use crate::log::gen_uuid4;
#[derive(Debug, Clone, Copy, Serialize, PartialEq, Display)]
pub(crate) struct PdpID(pub(crate) Uuid);
impl PdpID {
pub(crate) fn new() -> Self {
PdpID(gen_uuid4())
}
}
#[derive(Debug, Clone, PartialEq)]
pub(crate) struct ApplicationName(pub(crate) Arc<str>);
impl serde::Serialize for ApplicationName {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
serializer.serialize_str(&self.0)
}
}
impl<'de> serde::Deserialize<'de> for ApplicationName {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let s = String::deserialize(deserializer)?;
Ok(Self(s.into()))
}
}
impl From<String> for ApplicationName {
fn from(value: String) -> Self {
Self(value.into())
}
}