"""DELETE statement builder.
Provides a fluent interface for building SQL DELETE queries with
parameter binding and validation.
"""
from typing import TYPE_CHECKING, Any
from sqlglot import exp
from sqlspec.builder._base import BuiltQuery, QueryBuilder
from sqlspec.builder._dml import DeleteFromClauseMixin
from sqlspec.builder._explain import ExplainMixin
from sqlspec.builder._select import ReturningClauseMixin, WhereClauseMixin
from sqlspec.core import SQLResult
from sqlspec.exceptions import SQLBuilderError
if TYPE_CHECKING:
from sqlglot.dialects.dialect import DialectType
__all__ = ("Delete",)
class Delete(QueryBuilder, WhereClauseMixin, ReturningClauseMixin, DeleteFromClauseMixin, ExplainMixin):
"""Builder for DELETE statements.
Constructs SQL DELETE statements with parameter binding and validation.
Does not support JOIN operations to maintain cross-dialect compatibility.
"""
__slots__ = ()
_expression: exp.Expr | None
def __init__(self, table: str | None = None, **kwargs: Any) -> None:
"""Initialize DELETE with optional table.
Args:
table: Target table name
**kwargs: Additional QueryBuilder arguments
"""
self._init_query_builder(kwargs)
self._initialize_expression()
if table:
self.from_(table)