use nodedb_types::result::QueryResult;
use nodedb_types::value::Value;
use crate::error::LiteError;
use crate::query::engine::LiteQueryEngine;
use crate::storage::engine::StorageEngine;
use super::parser::parse_strict_create_sql;
impl<S: StorageEngine> LiteQueryEngine<S> {
pub(in crate::query) async fn handle_create_strict(
&self,
sql: &str,
) -> Result<QueryResult, LiteError> {
let (name, schema) = parse_strict_create_sql(sql)?;
self.strict.create_collection(&name, schema).await?;
self.register_strict_collection(&name);
Ok(QueryResult {
columns: vec!["result".into()],
rows: vec![vec![Value::String(format!(
"strict collection '{name}' created"
))]],
rows_affected: 0,
command: None,
})
}
pub(in crate::query) async fn handle_drop_strict(
&self,
name: &str,
) -> Result<QueryResult, LiteError> {
let strict = &self.strict;
self.indexes
.drop_collection_with(&*self.storage, name, || strict.drop_ops(name))
.await?;
self.strict.forget_collection(name)?;
Ok(QueryResult {
columns: vec!["result".into()],
rows: vec![vec![Value::String(format!(
"strict collection '{name}' dropped"
))]],
rows_affected: 0,
command: None,
})
}
}