rest_model/
doc.rs

1use chrono::Utc;
2use serde::{Deserialize, Serialize};
3
4use crate::{DbClient, RestModel};
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Doc<T> {
8    #[serde(default)]
9    pub _id: String,
10    #[serde(flatten)]
11    pub data: T,
12    #[serde(default)]
13    pub _created_at: i64,
14    #[serde(default)]
15    pub _updated_at: i64,
16}
17
18impl<T> Doc<T>
19where
20    T: RestModel,
21{
22    pub fn new(db: &impl DbClient<T>, data: T) -> Self {
23        Self {
24            _id: db.generate_id(),
25            data,
26            _created_at: Utc::now().timestamp_millis(),
27            _updated_at: Utc::now().timestamp_millis(),
28        }
29    }
30}