Skip to main content

dataplane_sdk/core/db/data_flow/
memory.rs

1use crate::core::{
2    db::memory::{MemoryRepo, MemoryTransaction},
3    error::DbResult,
4    model::data_flow::DataFlow,
5};
6
7use super::DataFlowRepo;
8
9#[derive(Default, Clone)]
10pub struct MemoryDataFlowRepo(MemoryRepo<DataFlow>);
11
12#[async_trait::async_trait]
13impl DataFlowRepo for MemoryDataFlowRepo {
14    type Transaction = MemoryTransaction;
15    async fn create(&self, _tx: &mut Self::Transaction, flow: &DataFlow) -> DbResult<()> {
16        self.0.create(&flow.id, flow).await
17    }
18
19    async fn fetch_by_id(
20        &self,
21        _tx: &mut Self::Transaction,
22        flow_id: &str,
23    ) -> DbResult<Option<DataFlow>> {
24        self.0.fetch_by_id(flow_id).await
25    }
26
27    async fn update(&self, _tx: &mut Self::Transaction, flow: &DataFlow) -> DbResult<()> {
28        self.0.update(&flow.id, flow).await
29    }
30
31    async fn delete(&self, _tx: &mut Self::Transaction, flow_id: &str) -> DbResult<()> {
32        self.0.delete(flow_id).await
33    }
34}
35
36#[cfg(test)]
37mod tests {
38    use crate::core::db::memory::MemoryContext;
39    use crate::core::db::memory::MemoryTransaction;
40    use crate::core::db::test_suite::Tester;
41    use crate::core::db::test_suite::generate_data_flow_store_tests;
42    use crate::core::db::tx::TransactionalContext;
43
44    use super::MemoryDataFlowRepo;
45
46    pub struct MemoryTester {
47        repo: MemoryDataFlowRepo,
48        ctx: MemoryContext,
49    }
50
51    impl Tester<MemoryDataFlowRepo, MemoryContext> for MemoryTester {
52        async fn create() -> Self {
53            let ctx = MemoryContext;
54            let repo = MemoryDataFlowRepo::default();
55            MemoryTester { repo, ctx }
56        }
57
58        fn store(&self) -> &MemoryDataFlowRepo {
59            &self.repo
60        }
61
62        async fn begin(&self) -> MemoryTransaction {
63            self.ctx.begin().await.expect("Failed to begin transaction")
64        }
65    }
66
67    generate_data_flow_store_tests!(MemoryTester);
68}