1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Copyright 2018 Huan Du. All rights reserved.
- // Licensed under the MIT license that can be found in the LICENSE file.
- package sqlbuilder
- import (
- "bytes"
- "strings"
- )
- // NewDeleteBuilder creates a new DELETE builder.
- func NewDeleteBuilder() *DeleteBuilder {
- return DefaultFlavor.NewDeleteBuilder()
- }
- func newDeleteBuilder() *DeleteBuilder {
- args := &Args{}
- return &DeleteBuilder{
- Cond: Cond{
- Args: args,
- },
- args: args,
- }
- }
- // DeleteBuilder is a builder to build DELETE.
- type DeleteBuilder struct {
- Cond
- table string
- whereExprs []string
- args *Args
- }
- // DeleteFrom sets table name in DELETE.
- func (db *DeleteBuilder) DeleteFrom(table string) *DeleteBuilder {
- db.table = Escape(table)
- return db
- }
- // Where sets expressions of WHERE in DELETE.
- func (db *DeleteBuilder) Where(andExpr ...string) *DeleteBuilder {
- db.whereExprs = append(db.whereExprs, andExpr...)
- return db
- }
- // String returns the compiled DELETE string.
- func (db *DeleteBuilder) String() string {
- s, _ := db.Build()
- return s
- }
- // Build returns compiled DELETE string and args.
- // They can be used in `DB#Query` of package `database/sql` directly.
- func (db *DeleteBuilder) Build() (sql string, args []interface{}) {
- return db.BuildWithFlavor(db.args.Flavor)
- }
- // BuildWithFlavor returns compiled DELETE string and args with flavor and initial args.
- // They can be used in `DB#Query` of package `database/sql` directly.
- func (db *DeleteBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{}) (sql string, args []interface{}) {
- buf := &bytes.Buffer{}
- buf.WriteString("DELETE FROM ")
- buf.WriteString(db.table)
- if len(db.whereExprs) > 0 {
- buf.WriteString(" WHERE ")
- buf.WriteString(strings.Join(db.whereExprs, " AND "))
- }
- return db.args.CompileWithFlavor(buf.String(), flavor, initialArg...)
- }
- // SetFlavor sets the flavor of compiled sql.
- func (db *DeleteBuilder) SetFlavor(flavor Flavor) (old Flavor) {
- old = db.args.Flavor
- db.args.Flavor = flavor
- return
- }
|