kmp_application/consolidation/
service.rs1use super::{CaptureConsolidationSources, ReadConsolidationView, WriteConsolidationView};
2use kmp_domain::{
3 PortError,
4 consolidation::{
5 ConsolidatedView, ConsolidationRead, ConsolidationSource, ConsolidationStore,
6 ConsolidationWrite,
7 },
8};
9use std::sync::Arc;
10
11pub struct ConsolidationApplicationService {
13 capture: CaptureConsolidationSources,
14 write: WriteConsolidationView,
15 read: ReadConsolidationView,
16}
17impl ConsolidationApplicationService {
18 pub fn new(store: Arc<dyn ConsolidationStore>) -> Self {
19 Self {
20 capture: CaptureConsolidationSources::new(store.clone()),
21 write: WriteConsolidationView::new(store.clone()),
22 read: ReadConsolidationView::new(store),
23 }
24 }
25 pub async fn sources(
26 &self,
27 about: String,
28 refs: Vec<String>,
29 ) -> Result<Vec<ConsolidationSource>, PortError> {
30 self.capture.execute(about, refs).await
31 }
32 pub async fn write(&self, command: ConsolidationWrite) -> Result<ConsolidatedView, PortError> {
33 self.write.execute(command).await
34 }
35 pub async fn read(
36 &self,
37 about: String,
38 view: String,
39 revision: Option<u64>,
40 ) -> Result<ConsolidationRead, PortError> {
41 self.read.execute(about, view, revision).await
42 }
43}