use chrono::NaiveDateTime; use serde::{Deserialize, Serialize}; #[derive(Clone, PartialEq, Deserialize, Serialize)] pub enum Story { File(std::path::PathBuf), Html(String) } /// Metadata describing a tale. /// /// This includes details such as the title, author, summary, and /// associated tags. #[derive(Clone, PartialEq, Deserialize, Serialize)] pub struct Lore { /// The title of the tale. pub title: String, /// A URL-friendly version of the title, used for routing and linking. pub slug: String, /// The name of the author who wrote the tale. pub author: String, /// A short summary or description of the tale. pub summary: String, /// A list of tags associated with the tale for categorization and /// searching. pub tags: Vec, /// The Date and Time that must elapse before this tale can be told. pub publish_date: NaiveDateTime } /// Represents a post or story in the application. #[derive(Clone, PartialEq, Deserialize, Serialize)] pub struct Tale { /// Metadata of the post. #[serde(flatten)] pub lore: Lore, /// The story content for this tale.. #[serde(flatten)] pub story: Story }