solidb_client/client/
database.rs1use 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}