mod builder;
use chrono::Weekday;
use graphile_worker_crontab_types::{CrontabTimer, CrontabTimerError};
use graphile_worker_task_handler::TaskHandler;
pub use builder::CronBuilder;
pub struct Cron;
impl Cron {
pub fn from_timer<T: TaskHandler>(timer: CrontabTimer) -> CronBuilder<T> {
CronBuilder::new(timer)
}
pub fn every_minute<T: TaskHandler>() -> CronBuilder<T> {
Self::from_timer(CrontabTimer::every_minute())
}
pub fn every_n_minutes<T: TaskHandler>(step: u32) -> Result<CronBuilder<T>, CrontabTimerError> {
Ok(Self::from_timer(CrontabTimer::every_n_minutes(step)?))
}
pub fn hourly_at<T: TaskHandler>(minute: u32) -> Result<CronBuilder<T>, CrontabTimerError> {
Ok(Self::from_timer(CrontabTimer::hourly_at(minute)?))
}
pub fn daily_at<T: TaskHandler>(
hour: u32,
minute: u32,
) -> Result<CronBuilder<T>, CrontabTimerError> {
Ok(Self::from_timer(CrontabTimer::daily_at(hour, minute)?))
}
pub fn weekly_on<T: TaskHandler>(
weekday: Weekday,
hour: u32,
minute: u32,
) -> Result<CronBuilder<T>, CrontabTimerError> {
Ok(Self::from_timer(CrontabTimer::weekly_on(
weekday, hour, minute,
)?))
}
pub fn monthly_on<T: TaskHandler>(
day: u32,
hour: u32,
minute: u32,
) -> Result<CronBuilder<T>, CrontabTimerError> {
Ok(Self::from_timer(CrontabTimer::monthly_on(
day, hour, minute,
)?))
}
pub fn yearly_on<T: TaskHandler>(
month: u32,
day: u32,
hour: u32,
minute: u32,
) -> Result<CronBuilder<T>, CrontabTimerError> {
Ok(Self::from_timer(CrontabTimer::yearly_on(
month, day, hour, minute,
)?))
}
}
#[cfg(test)]
mod tests;