use serde::{Deserialize, Serialize};
use strum::{AsRefStr, Display, IntoStaticStr};
use crate::api::v2::user::Flair;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct AnalyzerFeedback {
#[serde(default)]
pub summary: Option<String>,
#[serde(default)]
pub comments: Vec<AnalyzerComment>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct AnalyzerComment {
#[serde(default, rename = "type")]
pub comment_type: AnalyzerCommentType,
pub html: String,
}
#[derive(
Debug,
Default,
Copy,
Clone,
PartialEq,
Eq,
PartialOrd,
Ord,
Serialize,
Deserialize,
Display,
AsRefStr,
IntoStaticStr,
)]
#[serde(rename_all = "snake_case")]
#[strum(serialize_all = "snake_case")]
pub enum AnalyzerCommentType {
Essential,
Actionable,
#[default]
Informative,
Celebratory,
#[serde(skip_serializing, other)]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RepresenterFeedback {
pub html: String,
pub author: FeedbackAuthor,
#[serde(default)]
pub editor: Option<FeedbackAuthor>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct FeedbackAuthor {
pub name: String,
pub reputation: i32,
#[serde(default)]
pub flair: Option<Flair>,
pub avatar_url: String,
#[serde(default)]
pub profile_url: Option<String>,
}