use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(from = "i32", into = "i32")]
pub enum JobStatus {
Pending,
Succeeded,
Failed,
Lost,
Unknown(i32),
}
impl From<i32> for JobStatus {
fn from(value: i32) -> Self {
match value {
0 => JobStatus::Pending,
1 => JobStatus::Succeeded,
2 => JobStatus::Failed,
3 => JobStatus::Lost,
other => JobStatus::Unknown(other),
}
}
}
impl From<JobStatus> for i32 {
fn from(status: JobStatus) -> Self {
match status {
JobStatus::Pending => 0,
JobStatus::Succeeded => 1,
JobStatus::Failed => 2,
JobStatus::Lost => 3,
JobStatus::Unknown(other) => other,
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateJobRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub subscription_id: Option<i32>,
pub solver_id: String,
pub request: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JobDto {
#[serde(default)]
pub id: i64,
#[serde(default)]
pub job_id: Option<String>,
#[serde(default)]
pub tenant_id: Option<String>,
#[serde(default)]
pub subscription_id: i32,
#[serde(default)]
pub solver_type: i32,
pub status: JobStatus,
#[serde(default)]
pub created_at: String,
#[serde(default)]
pub completed_at: Option<String>,
#[serde(default)]
pub request: Option<String>,
#[serde(default)]
pub response: Option<String>,
#[serde(default)]
pub has_response: bool,
#[serde(default)]
pub billed_items: i32,
#[serde(default)]
pub user_id: Option<i32>,
#[serde(default)]
pub user_name: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PagedResultOfJobDto {
#[serde(default)]
pub items: Vec<JobDto>,
#[serde(default)]
pub total_count: i32,
#[serde(default)]
pub page: i32,
#[serde(default)]
pub page_size: i32,
#[serde(default)]
pub total_pages: i32,
#[serde(default)]
pub has_next_page: bool,
#[serde(default)]
pub has_previous_page: bool,
}