Skip to main content

gluesql_git_storage/
store_mut.rs

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