use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JobRecord {
pub id: String,
pub queue: String,
pub payload: Vec<u8>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub headers: HashMap<String, String>,
pub status: JobStatus,
pub attempts: u32,
pub max_attempts: u32,
pub enqueued_at: u64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub claimed_at: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lease_expires_at: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub run_at: Option<u64>,
pub priority: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dedup_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completed_at: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failed_at: Option<u64>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum JobStatus {
Pending,
Scheduled,
Claimed,
Done,
Dead,
}