gluesql_shared_memory_storage/
alter_table.rs

1use {
2    super::SharedMemoryStorage,
3    async_trait::async_trait,
4    gluesql_core::{ast::ColumnDef, error::Result, store::AlterTable},
5    std::sync::Arc,
6};
7
8#[async_trait]
9impl AlterTable for SharedMemoryStorage {
10    async fn rename_schema(&mut self, table_name: &str, new_table_name: &str) -> Result<()> {
11        let database = Arc::clone(&self.database);
12        let mut database = database.write().await;
13
14        database.rename_schema(table_name, new_table_name).await
15    }
16
17    async fn rename_column(
18        &mut self,
19        table_name: &str,
20        old_column_name: &str,
21        new_column_name: &str,
22    ) -> Result<()> {
23        let database = Arc::clone(&self.database);
24        let mut database = database.write().await;
25
26        database
27            .rename_column(table_name, old_column_name, new_column_name)
28            .await
29    }
30
31    async fn add_column(&mut self, table_name: &str, column_def: &ColumnDef) -> Result<()> {
32        let database = Arc::clone(&self.database);
33        let mut database = database.write().await;
34
35        database.add_column(table_name, column_def).await
36    }
37
38    async fn drop_column(
39        &mut self,
40        table_name: &str,
41        column_name: &str,
42        if_exists: bool,
43    ) -> Result<()> {
44        let database = Arc::clone(&self.database);
45        let mut database = database.write().await;
46
47        database
48            .drop_column(table_name, column_name, if_exists)
49            .await
50    }
51}