Skip to content
This repository was archived by the owner on May 13, 2026. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 11 additions & 16 deletions crates/core/src/progress.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ use std::collections::HashMap;
use std::sync::{Arc, Mutex};
use utoipa::ToSchema;

fn now_secs() -> u64 {
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap_or_default()
.as_secs()
}

/// Type of job being tracked
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, PartialEq)]
pub enum JobType {
Expand Down Expand Up @@ -63,10 +70,7 @@ pub struct Job {

impl Job {
pub fn new(id: String, job_type: JobType) -> Self {
let now = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap_or_default()
.as_secs();
let now = now_secs();

Self {
id,
Expand Down Expand Up @@ -98,21 +102,15 @@ impl Job {
self.progress_percentage = percentage.min(100);
self.message = message;
self.status = JobStatus::Running;
self.updated_at = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap_or_default()
.as_secs();
self.updated_at = now_secs();
}

pub fn complete(&mut self, result: Option<serde_json::Value>) {
self.status = JobStatus::Completed;
self.progress_percentage = 100;
self.message = "Completed".to_string();
self.result = result;
let now = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap_or_default()
.as_secs();
let now = now_secs();
self.updated_at = now;
self.completed_at = Some(now);
}
Expand All @@ -121,10 +119,7 @@ impl Job {
self.status = JobStatus::Failed;
self.error = Some(error.clone());
self.message = format!("Failed: {}", error);
let now = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap_or_default()
.as_secs();
let now = now_secs();
self.updated_at = now;
self.completed_at = Some(now);
}
Expand Down
Loading