stry_common/models/
mod.rs1pub mod blog;
6pub mod core;
7pub mod story;
8pub mod wiki;
9
10use {
11 crate::utils::nanoid,
12 arrayvec::ArrayString,
13 chrono::{DateTime, Utc},
14 std::ops::Deref,
15};
16
17crate::newtype! {
18 #[derive(serde::Deserialize, serde::Serialize)]
20 Id: ArrayString<[u8; nanoid::SIZE]>
21}
22
23#[rustfmt::skip]
25#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26#[derive(serde::Deserialize, serde::Serialize)]
27pub struct New<T> {
28 inner: T,
29}
30
31impl<T> Deref for New<T> {
32 type Target = T;
33
34 fn deref(&self) -> &Self::Target {
35 &self.inner
36 }
37}
38
39#[rustfmt::skip]
41#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42#[derive(serde::Deserialize, serde::Serialize)]
43pub struct Existing<T> {
44 pub id: Id,
54
55 inner: T,
56
57 pub created: DateTime<Utc>,
63
64 pub updated: DateTime<Utc>,
66}
67
68impl<T> Deref for Existing<T> {
69 type Target = T;
70
71 fn deref(&self) -> &Self::Target {
72 &self.inner
73 }
74}