use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PatchNote {
#[serde(rename = "id")]
pub id: uuid::Uuid,
#[serde(rename = "target")]
pub target: Target,
#[serde(rename = "category")]
pub category: Category,
#[serde(rename = "title")]
pub title: String,
#[serde(rename = "body")]
pub body: String,
#[serde(rename = "authorId", deserialize_with = "Option::deserialize")]
pub author_id: Option<uuid::Uuid>,
#[serde(rename = "imageUrls")]
pub image_urls: Vec<String>,
#[serde(rename = "createdAt")]
pub created_at: chrono::DateTime<chrono::FixedOffset>,
}
impl PatchNote {
pub fn new(id: uuid::Uuid, target: Target, category: Category, title: String, body: String, author_id: Option<uuid::Uuid>, image_urls: Vec<String>, created_at: chrono::DateTime<chrono::FixedOffset>) -> PatchNote {
PatchNote {
id,
target,
category,
title,
body,
author_id,
image_urls,
created_at,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Target {
#[serde(rename = "general")]
General,
#[serde(rename = "creativePro")]
CreativePro,
#[serde(rename = "frontier")]
Frontier,
#[serde(rename = "life")]
Life,
#[serde(rename = "leonGunWar2")]
LeonGunWar2,
#[serde(rename = "sclat")]
Sclat,
}
impl Default for Target {
fn default() -> Target {
Self::General
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Category {
#[serde(rename = "balance")]
Balance,
#[serde(rename = "event")]
Event,
#[serde(rename = "feature")]
Feature,
#[serde(rename = "fix")]
Fix,
#[serde(rename = "improvement")]
Improvement,
#[serde(rename = "map")]
Map,
#[serde(rename = "remove")]
Remove,
}
impl Default for Category {
fn default() -> Category {
Self::Balance
}
}