You've already forked AstralRinth
forked from didirus/AstralRinth
* Reports WIP * Finish reports * Clippy fixes Co-authored-by: Geometrically <geometrically@pop-os.localdomain>
40 lines
885 B
Rust
40 lines
885 B
Rust
use super::ids::Base62Id;
|
|
use crate::models::ids::UserId;
|
|
use chrono::{DateTime, Utc};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
|
#[serde(from = "Base62Id")]
|
|
#[serde(into = "Base62Id")]
|
|
pub struct ReportId(pub u64);
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
pub struct Report {
|
|
pub id: ReportId,
|
|
pub report_type: String,
|
|
pub item_id: String,
|
|
pub item_type: ItemType,
|
|
pub reporter: UserId,
|
|
pub body: String,
|
|
pub created: DateTime<Utc>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone)]
|
|
pub enum ItemType {
|
|
Mod,
|
|
Version,
|
|
User,
|
|
Unknown,
|
|
}
|
|
|
|
impl ItemType {
|
|
pub fn as_str(&self) -> &'static str {
|
|
match self {
|
|
ItemType::Mod => "mod",
|
|
ItemType::Version => "version",
|
|
ItemType::User => "user",
|
|
ItemType::Unknown => "unknown",
|
|
}
|
|
}
|
|
}
|