use crate::engine::DockerClient;
use crate::features::deploy::queue::DeployQueue;
use crate::platform::{event_bus::EventBus, secrets::SecretsManager};
use crate::store::Db;
use std::{
collections::{HashMap, HashSet},
path::PathBuf,
sync::{Arc, Mutex},
};
pub type ActiveJobs = Arc<Mutex<HashMap<String, tokio::sync::watch::Sender<bool>>>>;
#[derive(Clone)]
pub struct JobsContext {
pub db: Arc<Db>,
pub docker: Arc<DockerClient>,
pub bus: Arc<EventBus>,
pub secrets: Arc<SecretsManager>,
pub db_path: PathBuf,
pub registry_internal_token: Option<Arc<str>>,
pub active_jobs: ActiveJobs,
pub warming_jobs: Arc<Mutex<HashSet<String>>>,
pub deploy_queue: Arc<DeployQueue>,
}