From a8f704ef1b11b923ad9c1b72e739920a8b783b27 Mon Sep 17 00:00:00 2001 From: Mroik Date: Tue, 24 Jun 2025 06:39:31 +0200 Subject: Add scheduling on an hourly basis --- src/main.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 287f43f..e51cd03 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,7 +6,8 @@ use std::{ }; use anyhow::Result; -use log::error; +use clokwerk::{AsyncScheduler, Interval}; +use log::{error, info}; use rpgpie::{ certificate::Certificate, message::{SignatureMode, encrypt}, @@ -21,6 +22,27 @@ const MAX_FILE_SIZE: usize = 50000000; #[tokio::main] async fn main() -> Result<()> { env_logger::init(); + let mut scheduler = AsyncScheduler::new(); + let interval = var("INTERVAL")?.parse::()?; + + scheduler.every(Interval::Hours(interval)).run(|| async { + info!("Running a backup"); + backup().await.unwrap(); + info!("Backup terminated"); + }); + + info!("Program set to backup every {} hours", interval); + + info!("Running first backup out of schedule"); + backup().await?; + + loop { + scheduler.run_pending().await; + sleep(Duration::from_secs(30)).await; + } +} + +async fn backup() -> Result<()> { let chat_id = var("CHAT_ID").unwrap(); let locations: Vec = var("LOCATIONS") .unwrap() @@ -60,7 +82,6 @@ async fn main() -> Result<()> { } } } - Ok(()) } -- cgit v1.2.3