use mongodb::bson::DateTime;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize)]
pub struct TaskWorkerRunningInfo<K> {
pub running_id: Option<String>,
pub worker_id: String,
pub ping_expire_time: Option<DateTime>,
pub success_time: Option<DateTime>,
pub fail_time: Option<DateTime>,
pub fail_reason: Option<String>,
pub returns: Option<K>,
}
#[derive(Deserialize, Serialize)]
pub struct TaskState<K> {
pub create_time: DateTime,
pub start_time: DateTime,
pub worker_states: Vec<TaskWorkerRunningInfo<K>>,
}
#[derive(Deserialize, Serialize)]
pub struct TaskOption {
pub priority: u32,
pub concurrent_worker_cnt: u32,
pub ping_interval_ms: u32,
pub worker_timeout_ms: u32,
pub specific_worker_ids: Vec<String>,
pub max_unexpected_retries: u32,
pub unexpected_retry_delay_ms: u32,
}
#[derive(Deserialize, Serialize)]
pub struct Task<T, K> {
pub key: String,
pub task_state: TaskState<K>,
pub task_option: TaskOption,
pub params: Option<T>,
}
#[derive(Deserialize, Serialize)]
pub struct TaskBasicInfo<K> {
pub key: String,
pub task_option: Option<TaskOption>,
pub task_state: Option<TaskState<K>>,
}