aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMroik <mroik@delayed.space>2025-06-24 06:39:31 +0200
committerMroik <mroik@delayed.space>2025-06-24 06:55:37 +0200
commita8f704ef1b11b923ad9c1b72e739920a8b783b27 (patch)
tree0c82ce6a4baab17a8f8e4b354c031ebb8731dac5 /src
parent8b9f41e3ac27284cf8b211ea3350d9eaf3cc0d13 (diff)
Add scheduling on an hourly basis
Diffstat (limited to 'src')
-rw-r--r--src/main.rs25
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(())
}