use crate::{
db::{
PersistedRow, Row,
query::{
CompiledQuery, ExplainPlan, PlannedQuery, Query, QueryTracePlan,
expr::{FilterExpr, SortExpr},
predicate::Predicate,
},
response::Response,
session::macros::{impl_session_materialization_methods, impl_session_query_shape_methods},
},
error::Error,
traits::{EntityValue, SingletonEntity},
types::Id,
};
use icydb_core as core;
pub struct SessionDeleteQuery<'a, E: PersistedRow> {
pub(crate) inner: core::db::FluentDeleteQuery<'a, E>,
}
impl<E: PersistedRow> SessionDeleteQuery<'_, E> {
#[must_use]
pub const fn query(&self) -> &Query<E> {
self.inner.query()
}
impl_session_query_shape_methods!();
impl_session_materialization_methods!();
pub fn plan_hash_hex(&self) -> Result<String, Error> {
Ok(self.inner.plan_hash_hex()?)
}
pub fn trace(&self) -> Result<QueryTracePlan, Error> {
Ok(self.inner.trace()?)
}
pub fn explain(&self) -> Result<ExplainPlan, Error> {
Ok(self.inner.explain()?)
}
pub fn planned(&self) -> Result<PlannedQuery<E>, Error> {
Ok(self.inner.planned()?)
}
pub fn plan(&self) -> Result<CompiledQuery<E>, Error> {
Ok(self.inner.plan()?)
}
#[doc(hidden)]
pub fn execute_count_only(&self) -> Result<u32, Error>
where
E: EntityValue,
{
Ok(self.inner.execute_count_only()?)
}
}
impl<E: PersistedRow + SingletonEntity> SessionDeleteQuery<'_, E> {
#[must_use]
pub fn only(mut self) -> Self
where
E::Key: Default,
{
self.inner = self.inner.only();
self
}
}