update scope.go
This commit is contained in:
parent
79cacf7f09
commit
10fcb0c88e
@ -15,10 +15,16 @@ func Delete(scope *Scope) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !scope.Search.unscope && scope.HasColumn("DeletedAt") {
|
if !scope.Search.unscope && scope.HasColumn("DeletedAt") {
|
||||||
scope.Raw(fmt.Sprintf("UPDATE %v SET deleted_at=%v %v", scope.TableName(), scope.AddToVars(time.Now()), scope.CombinedConditionSql()))
|
scope.Raw(
|
||||||
|
fmt.Sprintf("UPDATE %v SET deleted_at=%v %v",
|
||||||
|
scope.TableName(),
|
||||||
|
scope.AddToVars(time.Now()),
|
||||||
|
scope.CombinedConditionSql(),
|
||||||
|
))
|
||||||
} else {
|
} else {
|
||||||
scope.Raw(fmt.Sprintf("DELETE FROM %v %v", scope.TableName(), scope.CombinedConditionSql()))
|
scope.Raw(fmt.Sprintf("DELETE FROM %v %v", scope.TableName(), scope.CombinedConditionSql()))
|
||||||
}
|
}
|
||||||
|
|
||||||
scope.Exec()
|
scope.Exec()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
model.go
2
model.go
@ -1,7 +1,6 @@
|
|||||||
package gorm
|
package gorm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
@ -210,7 +209,6 @@ func (m *Model) typeName() string {
|
|||||||
|
|
||||||
func (m *Model) tableName() (str string) {
|
func (m *Model) tableName() (str string) {
|
||||||
if m.data == nil {
|
if m.data == nil {
|
||||||
m.do.err(errors.New("Model haven't been set"))
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
57
scope.go
57
scope.go
@ -4,8 +4,10 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/jinzhu/gorm/dialect"
|
"github.com/jinzhu/gorm/dialect"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"regexp"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Scope struct {
|
type Scope struct {
|
||||||
@ -89,21 +91,56 @@ func (scope *Scope) CallMethod(name string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (scope *Scope) AddToVars(value interface{}) string {
|
||||||
|
scope.SqlVars = append(scope.SqlVars, value)
|
||||||
|
return scope.Dialect().BinVar(len(scope.SqlVars))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (scope *Scope) TableName() string {
|
||||||
|
if len(scope.Search.tableName) > 0 {
|
||||||
|
return scope.Search.tableName
|
||||||
|
} else {
|
||||||
|
data := reflect.Indirect(reflect.ValueOf(scope.Value))
|
||||||
|
|
||||||
|
if data.Kind() == reflect.Slice {
|
||||||
|
data = reflect.New(data.Type().Elem()).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
if fm := data.MethodByName("TableName"); fm.IsValid() {
|
||||||
|
if v := fm.Call([]reflect.Value{}); len(v) > 0 {
|
||||||
|
if result, ok := v[0].Interface().(string); ok {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
str := toSnake(data.Type().Name())
|
||||||
|
|
||||||
|
if !scope.db.parent.singularTable {
|
||||||
|
pluralMap := map[string]string{"ch": "ches", "ss": "sses", "sh": "shes", "day": "days", "y": "ies", "x": "xes", "s?": "s"}
|
||||||
|
for key, value := range pluralMap {
|
||||||
|
reg := regexp.MustCompile(key + "$")
|
||||||
|
if reg.MatchString(str) {
|
||||||
|
return reg.ReplaceAllString(str, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (scope *Scope) CombinedConditionSql() string {
|
func (scope *Scope) CombinedConditionSql() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (scope *Scope) AddToVars(value interface{}) string {
|
func (scope *Scope) Raw(sql string) {
|
||||||
return ""
|
scope.Sql = strings.Replace(sql, "$$", "?", -1)
|
||||||
}
|
|
||||||
|
|
||||||
func (scope *Scope) TableName() string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (scope *Scope) Raw(sql string, values ...interface{}) {
|
|
||||||
fmt.Println(sql, values)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (scope *Scope) Exec() {
|
func (scope *Scope) Exec() {
|
||||||
|
if !scope.HasError() {
|
||||||
|
_, err := scope.DB().Exec(scope.Sql, scope.SqlVars...)
|
||||||
|
scope.Err(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user