dataplane_sdk/core/db/data_flow/
memory.rs1use 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}