notesmachine/server/nm-store/src/row_structs.rs

73 lines
2.1 KiB
Rust

use chrono::{DateTime, Utc};
use derive_builder;
use serde::{Deserialize, Serialize};
use sqlx::{self, FromRow};
#[derive(Clone, Serialize, Deserialize, Debug, FromRow)]
pub struct RawPage {
pub id: i64,
pub slug: String,
pub title: String,
pub note_id: i64,
pub creation_date: DateTime<Utc>,
pub updated_date: DateTime<Utc>,
pub lastview_date: DateTime<Utc>,
pub deleted_date: Option<DateTime<Utc>>,
}
#[derive(Clone, Serialize, Deserialize, Debug, FromRow)]
pub struct RawNote {
pub id: i64,
pub uuid: String,
pub content: String,
pub notetype: String,
pub creation_date: DateTime<Utc>,
pub updated_date: DateTime<Utc>,
pub lastview_date: DateTime<Utc>,
pub deleted_date: Option<DateTime<Utc>>,
}
#[derive(Clone, Serialize, Deserialize, Debug, Builder)]
pub struct NewPage {
pub slug: String,
pub title: String,
pub note_id: i64,
#[builder(default = "chrono::Utc::now()")]
pub creation_date: DateTime<Utc>,
#[builder(default = "chrono::Utc::now()")]
pub updated_date: DateTime<Utc>,
#[builder(default = "chrono::Utc::now()")]
pub lastview_date: DateTime<Utc>,
pub deleted_date: Option<DateTime<Utc>>,
}
#[derive(Clone, Serialize, Deserialize, Debug, Builder)]
pub struct NewNote {
pub uuid: String,
pub content: String,
#[builder(default = "note")]
pub notetype: String,
#[builder(default = "chrono::Utc::now()")]
pub creation_date: DateTime<Utc>,
#[builder(default = "chrono::Utc::now()")]
pub updated_date: DateTime<Utc>,
#[builder(default = "chrono::Utc::now()")]
pub lastview_date: DateTime<Utc>,
pub deleted_date: Option<DateTime<Utc>>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn can_build_new_page() {
let now = chrono::Utc::now();
let newnote = NewNoteBuilder::default();
assert!((newnote.creation_date - now).num_minutes() < 1.0);
assert!((newnote.updated_date - now).num_minutes() < 1.0);
assert!((newnote.lastview_date - now).num_minutes() < 1.0);
assert!(newnote.deleted_date.is_none());
}
}