gluesql_git_storage/
store_mut.rs1use {
2 crate::GitStorage,
3 async_trait::async_trait,
4 gluesql_core::{
5 data::{Key, Schema},
6 error::Result,
7 store::{DataRow, StoreMut},
8 },
9};
10
11#[async_trait]
12impl StoreMut for GitStorage {
13 async fn insert_schema(&mut self, schema: &Schema) -> Result<()> {
14 self.get_store_mut().insert_schema(schema).await?;
15
16 self.add_and_commit(&format!(
17 "[GitStorage::insert_schema] {}",
18 schema.table_name
19 ))
20 }
21
22 async fn delete_schema(&mut self, table_name: &str) -> Result<()> {
23 self.get_store_mut().delete_schema(table_name).await?;
24
25 self.add_and_commit("[GitStorage::delete_schema] {table_name}")
26 }
27
28 async fn append_data(&mut self, table_name: &str, rows: Vec<DataRow>) -> Result<()> {
29 let n = rows.len();
30 if n == 0 {
31 return Ok(());
32 }
33
34 self.get_store_mut().append_data(table_name, rows).await?;
35
36 self.add_and_commit(&format!(
37 "[GitStorage::append_data] {table_name} - {n} rows"
38 ))
39 }
40
41 async fn insert_data(&mut self, table_name: &str, rows: Vec<(Key, DataRow)>) -> Result<()> {
42 let n = rows.len();
43 if n == 0 {
44 return Ok(());
45 }
46
47 self.get_store_mut().insert_data(table_name, rows).await?;
48
49 self.add_and_commit(&format!(
50 "[GitStorage::insert_data] {table_name} - {n} rows"
51 ))
52 }
53
54 async fn delete_data(&mut self, table_name: &str, keys: Vec<Key>) -> Result<()> {
55 let n = keys.len();
56 if n == 0 {
57 return Ok(());
58 }
59
60 self.get_store_mut().delete_data(table_name, keys).await?;
61
62 self.add_and_commit(&format!(
63 "[GitStorage::delete_data] {table_name} - {n} rows"
64 ))
65 }
66}