Files
db/exp/delete_clauses.go
T
whatandClaude 304d553b3c docs: Add CLAUDE.md with codebase guidance
Create comprehensive documentation for future Claude Code instances working in this repository, including:
- Development commands for testing, building, and code quality
- Core architecture overview of the SQL query builder system
- Directory structure and component explanations
- Testing patterns and conventions
- Key dependencies and their purposes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 15:47:28 +08:00

178 lines
3.9 KiB
Go

package exp
type (
DeleteClauses interface {
HasFrom() bool
clone() *deleteClauses
CommonTables() []CommonTableExpression
CommonTablesAppend(cte CommonTableExpression) DeleteClauses
From() ColumnListExpression
SetFrom(table ColumnListExpression) DeleteClauses
Where() ExpressionList
ClearWhere() DeleteClauses
WhereAppend(expressions ...Expression) DeleteClauses
Order() ColumnListExpression
HasOrder() bool
ClearOrder() DeleteClauses
SetOrder(oes ...OrderedExpression) DeleteClauses
OrderAppend(...OrderedExpression) DeleteClauses
OrderPrepend(...OrderedExpression) DeleteClauses
Limit() interface{}
HasLimit() bool
ClearLimit() DeleteClauses
SetLimit(limit interface{}) DeleteClauses
Returning() ColumnListExpression
HasReturning() bool
SetReturning(cl ColumnListExpression) DeleteClauses
}
deleteClauses struct {
commonTables []CommonTableExpression
from ColumnListExpression
where ExpressionList
order ColumnListExpression
limit interface{}
returning ColumnListExpression
}
)
func NewDeleteClauses() DeleteClauses {
return &deleteClauses{}
}
func (dc *deleteClauses) HasFrom() bool {
return dc.from != nil
}
func (dc *deleteClauses) clone() *deleteClauses {
return &deleteClauses{
commonTables: dc.commonTables,
from: dc.from,
where: dc.where,
order: dc.order,
limit: dc.limit,
returning: dc.returning,
}
}
func (dc *deleteClauses) CommonTables() []CommonTableExpression {
return dc.commonTables
}
func (dc *deleteClauses) CommonTablesAppend(cte CommonTableExpression) DeleteClauses {
ret := dc.clone()
ret.commonTables = append(ret.commonTables, cte)
return ret
}
func (dc *deleteClauses) From() ColumnListExpression {
return dc.from
}
func (dc *deleteClauses) SetFrom(table ColumnListExpression) DeleteClauses {
ret := dc.clone()
ret.from = table
return ret
}
func (dc *deleteClauses) Where() ExpressionList {
return dc.where
}
func (dc *deleteClauses) ClearWhere() DeleteClauses {
ret := dc.clone()
ret.where = nil
return ret
}
func (dc *deleteClauses) WhereAppend(expressions ...Expression) DeleteClauses {
if len(expressions) == 0 {
return dc
}
ret := dc.clone()
if ret.where == nil {
ret.where = NewExpressionList(AndType, expressions...)
} else {
ret.where = ret.where.Append(expressions...)
}
return ret
}
func (dc *deleteClauses) Order() ColumnListExpression {
return dc.order
}
func (dc *deleteClauses) HasOrder() bool {
return dc.order != nil
}
func (dc *deleteClauses) ClearOrder() DeleteClauses {
ret := dc.clone()
ret.order = nil
return ret
}
func (dc *deleteClauses) SetOrder(oes ...OrderedExpression) DeleteClauses {
ret := dc.clone()
ret.order = NewOrderedColumnList(oes...)
return ret
}
func (dc *deleteClauses) OrderAppend(oes ...OrderedExpression) DeleteClauses {
if dc.order == nil {
return dc.SetOrder(oes...)
}
ret := dc.clone()
ret.order = ret.order.Append(NewOrderedColumnList(oes...).Columns()...)
return ret
}
func (dc *deleteClauses) OrderPrepend(oes ...OrderedExpression) DeleteClauses {
if dc.order == nil {
return dc.SetOrder(oes...)
}
ret := dc.clone()
ret.order = NewOrderedColumnList(oes...).Append(ret.order.Columns()...)
return ret
}
func (dc *deleteClauses) Limit() interface{} {
return dc.limit
}
func (dc *deleteClauses) HasLimit() bool {
return dc.limit != nil
}
func (dc *deleteClauses) ClearLimit() DeleteClauses {
ret := dc.clone()
ret.limit = nil
return ret
}
func (dc *deleteClauses) SetLimit(limit interface{}) DeleteClauses {
ret := dc.clone()
ret.limit = limit
return ret
}
func (dc *deleteClauses) Returning() ColumnListExpression {
return dc.returning
}
func (dc *deleteClauses) HasReturning() bool {
return dc.returning != nil && !dc.returning.IsEmpty()
}
func (dc *deleteClauses) SetReturning(cl ColumnListExpression) DeleteClauses {
ret := dc.clone()
ret.returning = cl
return ret
}