use derive_more::{AsRef, Display, From, FromStr, Into};
use crate::utils::ExampleData;
#[derive(
AsRef, Display, From, FromStr, Into, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
)]
#[cfg_attr(
feature = "diesel",
derive(
opentalk_diesel_newtype::DieselNewtype,
diesel::expression::AsExpression,
diesel::deserialize::FromSqlRow
)
)]
#[cfg_attr(
feature = "diesel",
diesel(sql_type = diesel::sql_types::Text)
)]
#[cfg_attr(
feature = "redis",
derive(redis_args::ToRedisArgs, redis_args::FromRedisValue)
)]
#[cfg_attr(feature = "redis", to_redis_args(fmt), from_redis_value(FromStr))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(
feature = "utoipa",
derive(utoipa::ToSchema),
schema(example = json!(StreamingKey::example_data()))
)]
#[cfg_attr(
feature = "typescript",
derive(ts_rs::TS),
ts(export, export_to = "common/")
)]
pub struct StreamingKey(String);
impl StreamingKey {
pub fn as_str(&self) -> &str {
self.as_ref()
}
}
impl ExampleData for StreamingKey {
fn example_data() -> Self {
Self("aabbccddeeff".to_string())
}
}