pub mod blog;
pub mod core;
pub mod story;
pub mod wiki;
use {
crate::utils::nanoid,
arrayvec::ArrayString,
chrono::{DateTime, Utc},
std::ops::Deref,
};
crate::newtype! {
#[derive(serde::Deserialize, serde::Serialize)]
Id: ArrayString<[u8; nanoid::SIZE]>
}
#[rustfmt::skip]
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
#[derive(serde::Deserialize, serde::Serialize)]
pub struct New<T> {
inner: T,
}
impl<T> Deref for New<T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.inner
}
}
#[rustfmt::skip]
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
#[derive(serde::Deserialize, serde::Serialize)]
pub struct Existing<T> {
pub id: Id,
inner: T,
pub created: DateTime<Utc>,
pub updated: DateTime<Utc>,
}
impl<T> Deref for Existing<T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.inner
}
}