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}