gluesql_composite_storage/
transaction.rs1use {
2 super::CompositeStorage,
3 async_trait::async_trait,
4 gluesql_core::{
5 error::{Error, Result},
6 store::Transaction,
7 },
8};
9
10#[async_trait]
11impl Transaction for CompositeStorage {
12 async fn begin(&mut self, autocommit: bool) -> Result<bool> {
13 if autocommit {
14 for storage in self.storages.values_mut() {
15 storage.begin(autocommit).await?;
16 }
17
18 return Ok(true);
19 }
20
21 Err(Error::StorageMsg(
22 "[CompositeStorage] Transaction::begin is not supported".to_owned(),
23 ))
24 }
25
26 async fn rollback(&mut self) -> Result<()> {
27 for storage in self.storages.values_mut() {
28 storage.commit().await?;
29 }
30
31 Ok(())
32 }
33
34 async fn commit(&mut self) -> Result<()> {
35 for storage in self.storages.values_mut() {
36 storage.commit().await?;
37 }
38
39 Ok(())
40 }
41}