light-pkg/mySql/Delete.go

56 lines
1.2 KiB
Go
Raw Normal View History

2024-12-18 03:41:30 +08:00
package mySql
import (
"errors"
"fmt"
"github.com/Masterminds/squirrel"
"gorm.io/gorm"
)
type Delete struct {
tableName string
wheres []*Where
db *gorm.DB
}
func NewDelete(tableName string, db *gorm.DB) *Delete {
return &Delete{tableName: tableName, db: db}
}
func (t *Delete) WhereRaw(formula string, values ...interface{}) *Delete {
t.wheres = append(t.wheres, NewWhere(formula, values...))
return t
}
func (t *Delete) WhereColumn(formula string, values ...interface{}) *Delete {
t.WhereRaw(fmt.Sprintf("`%s` = ?", formula), values...)
return t
}
func (t *Delete) WhereColumnIn(formula string, values ...interface{}) *Delete {
t.WhereRaw(fmt.Sprintf("`%s` IN ?", formula), values...)
return t
}
func (t *Delete) Delete() error {
mapper, err := t.Mapper()
if err != nil {
return err
}
return mapper.Exec().Error
}
func (t *Delete) Mapper() (*SqlMapper, error) {
if len(t.wheres) == 0 || t.wheres[0].Formula == "" {
return nil, errors.New("没有where条件不被允许")
}
squ := squirrel.Delete(fmt.Sprintf("`%s`", t.tableName))
//拼接where
for _, where := range t.wheres {
squ = squ.Where(where.Formula, where.Values...)
}
return Mapper(squ.ToSql()).setDB(t.db), nil
}