windmill_api/models/
experiment_row.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct ExperimentRow {
16 #[serde(rename = "case_id")]
17 pub case_id: uuid::Uuid,
18 #[serde(rename = "input")]
19 pub input: Box<models::EvalCaseInput>,
20 #[serde(rename = "expected", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
21 pub expected: Option<Option<serde_json::Value>>,
22 #[serde(rename = "job_id", skip_serializing_if = "Option::is_none")]
24 pub job_id: Option<uuid::Uuid>,
25 #[serde(rename = "status")]
27 pub status: Status,
28 #[serde(rename = "output", skip_serializing_if = "Option::is_none")]
30 pub output: Option<String>,
31 #[serde(rename = "subject_version", skip_serializing_if = "Option::is_none")]
33 pub subject_version: Option<i64>,
34 #[serde(rename = "subject_draft_hash", skip_serializing_if = "Option::is_none")]
36 pub subject_draft_hash: Option<String>,
37 #[serde(rename = "scores")]
39 pub scores: Vec<models::CellScore>,
40}
41
42impl ExperimentRow {
43 pub fn new(case_id: uuid::Uuid, input: models::EvalCaseInput, status: Status, scores: Vec<models::CellScore>) -> ExperimentRow {
44 ExperimentRow {
45 case_id,
46 input: Box::new(input),
47 expected: None,
48 job_id: None,
49 status,
50 output: None,
51 subject_version: None,
52 subject_draft_hash: None,
53 scores,
54 }
55 }
56}
57#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
59pub enum Status {
60 #[serde(rename = "running")]
61 Running,
62 #[serde(rename = "success")]
63 Success,
64 #[serde(rename = "failure")]
65 Failure,
66 #[serde(rename = "canceled")]
67 Canceled,
68 #[serde(rename = "skipped")]
69 Skipped,
70 #[serde(rename = "unavailable")]
71 Unavailable,
72}
73
74impl Default for Status {
75 fn default() -> Status {
76 Self::Running
77 }
78}
79