use anyhow::Result;
use chrono::{Timelike, Utc};
use crate::memory::config::MemoryConfig;
use crate::memory::queue::store;
use crate::memory::queue::store_settle::requeue_transient_failed;
use crate::memory::queue::types::{FlushStalePayload, NewJob};
pub fn enqueue_flush_stale(config: &MemoryConfig) -> Result<Option<String>> {
let now = Utc::now();
let today_iso = now.date_naive().format("%Y-%m-%d").to_string();
let hour_block = now.hour() / 3;
let new_job = NewJob::flush_stale(&FlushStalePayload::default(), &today_iso, hour_block)?;
store::enqueue(config, &new_job)
}
pub fn self_heal(config: &MemoryConfig) -> Result<u64> {
requeue_transient_failed(config)
}
#[cfg(test)]
#[path = "scheduler_tests.rs"]
mod tests;