mod weekly_report; use sqlx::sqlite::SqlitePool; use tera::Tera; use tokio::time::{sleep, Duration}; use crate::db; 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 { log::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 { log::info!("Starting monthly payment job"); db::payments::create_monthly_payments(&pool).await; db::jobs::actualize_last_execution(&pool, Job::MonthlyPayment) .await; } // Sleeping 8 hours sleep(Duration::from_secs(8 * 60 * 60)).await; } }