Documentation
use crate::models::{ModerateData, RedditResponse, VoteData};
use serde::Deserialize;

#[derive(Deserialize, Debug, Clone)]
#[serde(untagged)]
pub enum CommentReplies {
    NoReply(String),
    HasReplies(Vec<RedditResponse>),
}

impl Default for CommentReplies {
    fn default() -> Self {
        CommentReplies::NoReply(String::new())
    }
}

#[derive(Deserialize, Debug, Clone)]
pub struct CommentData {
    #[serde(flatten)]
    pub vote_data: VoteData,

    #[serde(flatten)]
    pub moderate_data: ModerateData,

    pub author: String,
    pub body: String,
    pub body_html: String,
    pub parent_id: String,
    pub subreddit: String,
    pub link_id: String,
    pub link_title: String,

    pub replies: CommentReplies,

    pub total_awards_received: i32,
    pub approved_at_utc: Option<f32>,
}