brainwires_memory/dream/
task.rs1use std::sync::Arc;
4
5use anyhow::Result;
6use tokio::sync::Mutex;
7
8use super::consolidator::{DreamConsolidator, DreamSessionStore};
9use super::metrics::DreamReport;
10
11pub struct DreamTask {
16 consolidator: Arc<Mutex<DreamConsolidator>>,
17 session_store: Arc<dyn DreamSessionStore>,
18 cron_expr: String,
21}
22
23impl DreamTask {
24 pub fn new(
26 consolidator: Arc<Mutex<DreamConsolidator>>,
27 session_store: Arc<dyn DreamSessionStore>,
28 cron_expr: impl Into<String>,
29 ) -> Self {
30 Self {
31 consolidator,
32 session_store,
33 cron_expr: cron_expr.into(),
34 }
35 }
36
37 pub async fn run_once(&self) -> Result<DreamReport> {
39 let mut consolidator = self.consolidator.lock().await;
40 consolidator.run_cycle(&*self.session_store).await
41 }
42
43 pub fn cron_expr(&self) -> &str {
45 &self.cron_expr
46 }
47}