use std::collections::HashMap;
pub trait ItemMetadata: Sized + Clone + Send + Sync {
fn created_at(&self) -> &str;
fn updated_at(&self) -> &str;
fn deleted_at(&self) -> Option<&str>;
fn set_updated_at(&mut self, timestamp: String);
fn set_deleted_at(&mut self, timestamp: Option<String>);
fn is_deleted(&self) -> bool {
self.deleted_at().is_some()
}
}
pub trait DisplayNumbered: ItemMetadata {
fn display_number(&self) -> u32;
fn set_display_number(&mut self, num: u32);
}
pub trait Statusable: ItemMetadata {
fn status(&self) -> &str;
fn set_status(&mut self, status: String);
}
pub trait Prioritized: ItemMetadata {
fn priority(&self) -> u32;
fn set_priority(&mut self, priority: u32);
}
pub trait CustomFielded: ItemMetadata {
fn custom_fields(&self) -> &HashMap<String, serde_json::Value>;
fn custom_fields_mut(&mut self) -> &mut HashMap<String, serde_json::Value>;
}