use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Task {
#[serde(rename = "message_id", skip_serializing_if = "Option::is_none")]
pub message_id: Option<uuid::Uuid>,
#[serde(rename = "queue_name", skip_serializing_if = "Option::is_none")]
pub queue_name: Option<String>,
#[serde(rename = "actor_name")]
pub actor_name: String,
#[serde(rename = "state", skip_serializing_if = "Option::is_none")]
pub state: Option<models::TaskStateEnum>,
#[serde(rename = "mtime", skip_serializing_if = "Option::is_none")]
pub mtime: Option<String>,
#[serde(rename = "retries", skip_serializing_if = "Option::is_none")]
pub retries: Option<u64>,
#[serde(
rename = "eta",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub eta: Option<Option<String>>,
#[serde(rename = "rel_obj_app_label")]
pub rel_obj_app_label: String,
#[serde(rename = "rel_obj_model")]
pub rel_obj_model: String,
#[serde(
rename = "rel_obj_id",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub rel_obj_id: Option<Option<String>>,
#[serde(rename = "uid")]
pub uid: String,
#[serde(rename = "logs")]
pub logs: Vec<models::LogEvent>,
#[serde(rename = "previous_logs")]
pub previous_logs: Vec<models::LogEvent>,
#[serde(rename = "aggregated_status")]
pub aggregated_status: models::TaskAggregatedStatusEnum,
#[serde(rename = "description", deserialize_with = "Option::deserialize")]
pub description: Option<String>,
}
impl Task {
pub fn new(
actor_name: String,
rel_obj_app_label: String,
rel_obj_model: String,
uid: String,
logs: Vec<models::LogEvent>,
previous_logs: Vec<models::LogEvent>,
aggregated_status: models::TaskAggregatedStatusEnum,
description: Option<String>,
) -> Task {
Task {
message_id: None,
queue_name: None,
actor_name,
state: None,
mtime: None,
retries: None,
eta: None,
rel_obj_app_label,
rel_obj_model,
rel_obj_id: None,
uid,
logs,
previous_logs,
aggregated_status,
description,
}
}
}