diff options
| author | Mroik <mroik@delayed.space> | 2025-06-24 06:39:31 +0200 |
|---|---|---|
| committer | Mroik <mroik@delayed.space> | 2025-06-24 06:55:37 +0200 |
| commit | a8f704ef1b11b923ad9c1b72e739920a8b783b27 (patch) | |
| tree | 0c82ce6a4baab17a8f8e4b354c031ebb8731dac5 /src | |
| parent | 8b9f41e3ac27284cf8b211ea3350d9eaf3cc0d13 (diff) | |
Add scheduling on an hourly basis
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 25 |
1 files changed, 23 insertions, 2 deletions
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::<u32>()?; + + 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<String> = var("LOCATIONS") .unwrap() @@ -60,7 +82,6 @@ async fn main() -> Result<()> { } } } - Ok(()) } |
