use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Status {
Queued,
Running,
Succeeded,
Failed,
Cancelled,
Interrupted,
Paused,
}
impl Status {
pub fn finished(self) -> bool {
!matches!(self, Status::Queued | Status::Running | Status::Paused)
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JobRecord {
pub id: String,
pub kind: String,
pub started_by: Option<String>,
pub status: Status,
pub created: String,
#[serde(default)]
pub started: Option<String>,
pub finished: Option<String>,
pub error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub beat: Option<String>,
}