use sqlx::sqlite::SqlitePool; use tera::Tera; use tokio::time::{delay_for, Duration}; use crate::db; use crate::jobs::weekly_report; use crate::model::config::Config; use crate::model::job::Job; pub async fn start(config: Config, pool: SqlitePool, templates: Tera) -> () { loop { if db::jobs::should_run(&pool, Job::WeeklyReport).await { info!("Starting weekly report job"); if weekly_report::send(&config, &pool, &templates).await { db::jobs::actualize_last_execution(&pool, Job::WeeklyReport) .await; } } if db::jobs::should_run(&pool, Job::MonthlyPayment).await { info!("Starting monthly payment job"); db::payments::create_monthly_payments(&pool).await; db::jobs::actualize_last_execution(&pool, Job::MonthlyPayment) .await; } // Sleeping 8 hours delay_for(Duration::from_secs(8 * 60 * 60)).await; } }