use std::collections::HashMap;
use std::time::Duration;
use crate::local_queue::LocalQueueConfig;
use crate::runner::WorkerFn;
use graphile_worker_crontab_types::Crontab;
use graphile_worker_database::{Database, Schema};
use graphile_worker_extensions::Extensions;
use graphile_worker_lifecycle_hooks::HookRegistry;
use graphile_worker_recovery::WorkerRecoveryConfig;
mod batching;
mod core;
mod cron;
mod cron_input;
mod database;
mod errors;
mod hooks;
mod init;
mod jobs;
mod local_queue;
mod recovery;
mod shutdown;
pub use cron_input::CronInput;
pub use errors::WorkerBuildError;
#[derive(Default)]
pub struct WorkerOptions {
concurrency: Option<usize>,
poll_interval: Option<Duration>,
use_notification_delivery: Option<bool>,
jobs: HashMap<String, WorkerFn>,
database: Option<Database>,
database_url: Option<String>,
max_pg_conn: Option<u32>,
schema: Option<Schema>,
forbidden_flags: Vec<String>,
crontabs: Option<Vec<Crontab>>,
use_local_time: bool,
extensions: Extensions,
hooks: HookRegistry,
local_queue_config: Option<LocalQueueConfig>,
complete_job_batch_delay: Option<Duration>,
fail_job_batch_delay: Option<Duration>,
worker_recovery_config: Option<WorkerRecoveryConfig>,
worker_shutdown_config: Option<crate::WorkerShutdownConfig>,
}
impl WorkerOptions {
fn append_crontabs(&mut self, mut crontabs: Vec<Crontab>) {
match self.crontabs.as_mut() {
Some(existing) => existing.append(&mut crontabs),
None => {
self.crontabs = Some(crontabs);
}
}
}
}