//! Content system types and metadata structures

use std::collections::HashMap;

use serde::{Deserialize, Serialize};

// Type aliases
/// Content identifier type
pub type ContentId = String;

/// Basic content item structure
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BasicContentItem {
    /// Content identifier
    pub id: ContentId,
    /// Content title
    pub title: String,
    /// Content summary/excerpt
    pub summary: Option<String>,
    /// Content body/HTML
    pub content: String,
    /// Publication date
    pub date: Option<String>,
    /// Content tags
    pub tags: Vec<String>,
    /// Content metadata
    pub metadata: HashMap<String, String>,
}
