use sea_orm::entity::prelude::*; use time::OffsetDateTime; use uuid::Uuid; #[derive( Debug, Clone, Copy, PartialEq, Eq, Default, EnumIter, DeriveActiveEnum, serde::Serialize, serde::Deserialize, )] #[serde(rename_all = "snake_case")] #[sea_orm(rs_type = "String", db_type = "String(StringLen::N(16))")] pub enum ReportStatus { #[default] #[sea_orm(string_value = "open")] Open, #[sea_orm(string_value = "under_review")] UnderReview, #[sea_orm(string_value = "resolved")] Resolved, #[sea_orm(string_value = "dismissed")] Dismissed, } #[sea_orm::model] #[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[sea_orm(table_name = "user_reports")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: Uuid, pub reporter_uid: Option, #[sea_orm( belongs_to, relation_enum = "Reporter", from = "reporter_uid", to = "uid" )] pub reporter: BelongsTo>, pub reported_uid: Uuid, #[sea_orm( belongs_to, relation_enum = "ReportedUser", from = "reported_uid", to = "uid" )] pub reported_user: BelongsTo, pub reason: String, pub evidence: Option, pub status: ReportStatus, pub resolver_uid: Option, #[sea_orm( belongs_to, relation_enum = "Resolver", from = "resolver_uid", to = "uid" )] pub resolver: BelongsTo>, pub resolution_note: Option, pub created_at: OffsetDateTime, pub updated_at: OffsetDateTime, } impl ActiveModelBehavior for ActiveModel {}