Skip to main content

solidb_client/client/
database.rs

1use super::SoliDBClient;
2use crate::protocol::{Command, DriverError};
3
4impl SoliDBClient {
5    pub async fn list_databases(&mut self) -> Result<Vec<String>, DriverError> {
6        let response = self.send_command(Command::ListDatabases).await?;
7        let data = Self::extract_data(response)?
8            .ok_or_else(|| DriverError::ProtocolError("Expected data".to_string()))?;
9
10        serde_json::from_value(data)
11            .map_err(|e| DriverError::ProtocolError(format!("Invalid response: {}", e)))
12    }
13
14    pub async fn create_database(&mut self, name: &str) -> Result<(), DriverError> {
15        let response = self
16            .send_command(Command::CreateDatabase {
17                name: name.to_string(),
18            })
19            .await?;
20        Self::extract_data(response)?;
21        Ok(())
22    }
23
24    pub async fn delete_database(&mut self, name: &str) -> Result<(), DriverError> {
25        let response = self
26            .send_command(Command::DeleteDatabase {
27                name: name.to_string(),
28            })
29            .await?;
30        Self::extract_data(response)?;
31        Ok(())
32    }
33}