broccoli_server_sdk/types/
persistence.rs1use super::verdict::Verdict;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum SubmissionStatus {
6 Running,
7 Judged,
8 CompilationError,
9}
10
11impl SubmissionStatus {
12 pub fn as_str(&self) -> &'static str {
13 match self {
14 Self::Running => "Running",
15 Self::Judged => "Judged",
16 Self::CompilationError => "CompilationError",
17 }
18 }
19
20 pub fn is_terminal(&self) -> bool {
21 matches!(self, Self::Judged | Self::CompilationError)
22 }
23}
24
25#[derive(Debug, Clone, Default, PartialEq)]
27pub struct SubmissionUpdate {
28 pub submission_id: i32,
29 pub status: Option<SubmissionStatus>,
30 pub verdict: Option<Option<Verdict>>,
31 pub score: Option<f64>,
32 pub time_used: Option<Option<i32>>,
33 pub memory_used: Option<Option<i32>>,
34 pub compile_output: Option<Option<String>>,
35 pub error_code: Option<Option<String>>,
36 pub error_message: Option<Option<String>>,
37}
38
39#[derive(Debug, Clone, PartialEq)]
41pub struct TestCaseResultRow {
42 pub submission_id: i32,
43 pub test_case_id: i32,
44 pub verdict: Verdict,
45 pub score: f64,
46 pub time_used: Option<i32>,
47 pub memory_used: Option<i32>,
48 pub message: Option<String>,
49 pub stdout: Option<String>,
50 pub stderr: Option<String>,
51}