use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Clone, Default, PartialEq, Eq, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
#[cfg_attr(
feature = "sqlx",
sqlx(type_name = "subgroup_verdict", rename_all = "snake_case")
)]
#[serde(rename_all = "snake_case")]
pub enum SubgroupVerdict {
#[default]
Ok,
RuntimeError,
TimeLimitExceeded,
MemoryLimitExceeded,
SecurityError,
WrongAnswer,
PresentationError,
Skipped,
Testing,
}
impl fmt::Display for SubgroupVerdict {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let converted = match self {
Self::Ok => "Ok",
Self::RuntimeError => "RuntimeError",
Self::TimeLimitExceeded => "TimeLimitExceeded",
Self::MemoryLimitExceeded => "MemoryLimitExceeded",
Self::SecurityError => "SecurityError",
Self::WrongAnswer => "WrongAnswer",
Self::PresentationError => "PresentationError",
Self::Skipped => "Skipped",
Self::Testing => "Testing",
};
write!(f, "{converted}")
}
}
impl std::error::Error for SubgroupVerdict {}
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
#[cfg_attr(
feature = "sqlx",
sqlx(type_name = "total_verdict", rename_all = "snake_case")
)]
#[serde(rename_all = "snake_case")]
pub enum TotalVerdict {
Ok,
PartialSolution,
Pending,
Compiling,
CompilationError,
Testing,
InvalidProblem,
InvalidRequest,
Bug,
}
impl fmt::Display for TotalVerdict {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let converted = match self {
Self::Ok => "Ok",
Self::PartialSolution => "PartialSolution",
Self::Pending => "Pending",
Self::Compiling => "Compiling",
Self::CompilationError => "CompilationError",
Self::Testing => "Testing",
Self::InvalidProblem => "InvalidProblem",
Self::InvalidRequest => "InvalidRequest",
Self::Bug => "Bug",
};
write!(f, "{converted}")
}
}
impl std::error::Error for TotalVerdict {}