changes
All checks were successful
CI / ci (push) Successful in 19m38s

This commit is contained in:
2026-08-26 20:55:30 +02:00
parent a557c183e9
commit 23d052278a
523 changed files with 24448 additions and 2005 deletions

View File

@@ -0,0 +1,35 @@
use std::sync::Arc;
use domain::ports::{
ActivityQueryPort, EntryDimensionPort, ExtractWriterPort, MoodEntryQueryPort, SharedExtract,
};
use domain::user::UserId;
use crate::entry::composition::EntryComposer;
use crate::errors::ApplicationError;
pub struct Deps {
pub entries: Arc<dyn MoodEntryQueryPort>,
pub dimensions: Vec<Arc<dyn EntryDimensionPort>>,
pub activities: Arc<dyn ActivityQueryPort>,
pub writer: Arc<dyn ExtractWriterPort>,
}
#[tracing::instrument(skip(deps))]
pub async fn execute(user_id: UserId, deps: &Deps) -> Result<Vec<u8>, ApplicationError> {
let entries = EntryComposer::new(deps.dimensions.clone())
.compose(deps.entries.find_by_user(&user_id, None, None).await?)
.await?;
let extract = SharedExtract {
entries,
activities: deps.activities.find_by_user(&user_id).await?,
};
tracing::info!(
entries = extract.entries.len(),
"writing a shareable extract"
);
Ok(deps.writer.write(&extract).await?)
}