use crate::api::models::AlbumQuery; use chrono::{DateTime, Utc}; use j_db::database::Database; use j_db::model::JdbModel; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Deserialize, Serialize)] pub struct Album { pub album_name: String, pub images: Vec, pub aliases: Vec, pub created_at: DateTime, pub modified_at: DateTime, pub owner: u64, id: Option, } impl Album { pub fn new(name: &str, aliases: Vec, owner: u64) -> Album { Album { album_name: name.to_string(), images: vec![], aliases, created_at: Utc::now(), modified_at: Utc::now(), owner, id: None, } } pub fn find_album_by_query(db: &Database, album_query: AlbumQuery) -> Option { if let Some(album_name) = &album_query.album_name { db.filter(|_, album: &Album| album.album_name == *album_name) .unwrap() .next() } else { None } } } impl JdbModel for Album { fn id(&self) -> Option { self.id } fn set_id(&mut self, id: u64) { self.id = Some(id); } fn tree() -> String { "Album".to_string() } fn check_unique(&self, other: &Self) -> bool { other.album_name != self.album_name } }