fork github.com/doug-martin

This commit is contained in:
2025-03-22 23:02:05 +08:00
commit f14642a736
131 changed files with 34555 additions and 0 deletions
+177
View File
@@ -0,0 +1,177 @@
package exp
type (
DeleteClauses interface {
HasFrom() bool
clone() *deleteClauses
CommonTables() []CommonTableExpression
CommonTablesAppend(cte CommonTableExpression) DeleteClauses
From() IdentifierExpression
SetFrom(table IdentifierExpression) 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 IdentifierExpression
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() IdentifierExpression {
return dc.from
}
func (dc *deleteClauses) SetFrom(table IdentifierExpression) 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
}