Bump gorm.io/gorm from 1.30.0 to 1.30.1
Bumps [gorm.io/gorm](https://github.com/go-gorm/gorm) from 1.30.0 to 1.30.1. - [Release notes](https://github.com/go-gorm/gorm/releases) - [Commits](https://github.com/go-gorm/gorm/compare/v1.30.0...v1.30.1) --- updated-dependencies: - dependency-name: gorm.io/gorm dependency-version: 1.30.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
parent
e687565671
commit
f4892be193
10 changed files with 83 additions and 28 deletions
2
go.mod
2
go.mod
|
|
@ -37,7 +37,7 @@ require (
|
||||||
gorm.io/datatypes v1.2.6
|
gorm.io/datatypes v1.2.6
|
||||||
gorm.io/driver/mysql v1.6.0
|
gorm.io/driver/mysql v1.6.0
|
||||||
gorm.io/driver/sqlite v1.6.0
|
gorm.io/driver/sqlite v1.6.0
|
||||||
gorm.io/gorm v1.30.0
|
gorm.io/gorm v1.30.1
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
|
|
||||||
4
go.sum
4
go.sum
|
|
@ -229,5 +229,5 @@ gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ=
|
||||||
gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8=
|
gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8=
|
||||||
gorm.io/driver/sqlserver v1.6.0 h1:VZOBQVsVhkHU/NzNhRJKoANt5pZGQAS1Bwc6m6dgfnc=
|
gorm.io/driver/sqlserver v1.6.0 h1:VZOBQVsVhkHU/NzNhRJKoANt5pZGQAS1Bwc6m6dgfnc=
|
||||||
gorm.io/driver/sqlserver v1.6.0/go.mod h1:WQzt4IJo/WHKnckU9jXBLMJIVNMVeTu25dnOzehntWw=
|
gorm.io/driver/sqlserver v1.6.0/go.mod h1:WQzt4IJo/WHKnckU9jXBLMJIVNMVeTu25dnOzehntWw=
|
||||||
gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs=
|
gorm.io/gorm v1.30.1 h1:lSHg33jJTBxs2mgJRfRZeLDG+WZaHYCk3Wtfl6Ngzo4=
|
||||||
gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
|
gorm.io/gorm v1.30.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
|
||||||
|
|
|
||||||
26
vendor/gorm.io/gorm/callbacks/create.go
generated
vendored
26
vendor/gorm.io/gorm/callbacks/create.go
generated
vendored
|
|
@ -53,9 +53,13 @@ func Create(config *Config) func(db *gorm.DB) {
|
||||||
if _, ok := db.Statement.Clauses["RETURNING"]; !ok {
|
if _, ok := db.Statement.Clauses["RETURNING"]; !ok {
|
||||||
fromColumns := make([]clause.Column, 0, len(db.Statement.Schema.FieldsWithDefaultDBValue))
|
fromColumns := make([]clause.Column, 0, len(db.Statement.Schema.FieldsWithDefaultDBValue))
|
||||||
for _, field := range db.Statement.Schema.FieldsWithDefaultDBValue {
|
for _, field := range db.Statement.Schema.FieldsWithDefaultDBValue {
|
||||||
fromColumns = append(fromColumns, clause.Column{Name: field.DBName})
|
if field.Readable {
|
||||||
|
fromColumns = append(fromColumns, clause.Column{Name: field.DBName})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(fromColumns) > 0 {
|
||||||
|
db.Statement.AddClause(clause.Returning{Columns: fromColumns})
|
||||||
}
|
}
|
||||||
db.Statement.AddClause(clause.Returning{Columns: fromColumns})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -122,6 +126,16 @@ func Create(config *Config) func(db *gorm.DB) {
|
||||||
pkFieldName = "@id"
|
pkFieldName = "@id"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if db.Statement.Schema != nil {
|
||||||
|
if db.Statement.Schema.PrioritizedPrimaryField == nil ||
|
||||||
|
!db.Statement.Schema.PrioritizedPrimaryField.HasDefaultValue ||
|
||||||
|
!db.Statement.Schema.PrioritizedPrimaryField.Readable {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
pkField = db.Statement.Schema.PrioritizedPrimaryField
|
||||||
|
pkFieldName = db.Statement.Schema.PrioritizedPrimaryField.DBName
|
||||||
|
}
|
||||||
|
|
||||||
insertID, err := result.LastInsertId()
|
insertID, err := result.LastInsertId()
|
||||||
insertOk := err == nil && insertID > 0
|
insertOk := err == nil && insertID > 0
|
||||||
|
|
||||||
|
|
@ -132,14 +146,6 @@ func Create(config *Config) func(db *gorm.DB) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if db.Statement.Schema != nil {
|
|
||||||
if db.Statement.Schema.PrioritizedPrimaryField == nil || !db.Statement.Schema.PrioritizedPrimaryField.HasDefaultValue {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
pkField = db.Statement.Schema.PrioritizedPrimaryField
|
|
||||||
pkFieldName = db.Statement.Schema.PrioritizedPrimaryField.DBName
|
|
||||||
}
|
|
||||||
|
|
||||||
// append @id column with value for auto-increment primary key
|
// append @id column with value for auto-increment primary key
|
||||||
// the @id value is correct, when: 1. without setting auto-increment primary key, 2. database AutoIncrementIncrement = 1
|
// the @id value is correct, when: 1. without setting auto-increment primary key, 2. database AutoIncrementIncrement = 1
|
||||||
switch values := db.Statement.Dest.(type) {
|
switch values := db.Statement.Dest.(type) {
|
||||||
|
|
|
||||||
2
vendor/gorm.io/gorm/generics.go
generated
vendored
2
vendor/gorm.io/gorm/generics.go
generated
vendored
|
|
@ -567,7 +567,7 @@ func (g execG[T]) First(ctx context.Context) (T, error) {
|
||||||
|
|
||||||
func (g execG[T]) Scan(ctx context.Context, result interface{}) error {
|
func (g execG[T]) Scan(ctx context.Context, result interface{}) error {
|
||||||
var r T
|
var r T
|
||||||
err := g.g.apply(ctx).Model(r).Find(&result).Error
|
err := g.g.apply(ctx).Model(r).Find(result).Error
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
8
vendor/gorm.io/gorm/gorm.go
generated
vendored
8
vendor/gorm.io/gorm/gorm.go
generated
vendored
|
|
@ -137,6 +137,14 @@ func Open(dialector Dialector, opts ...Option) (db *DB, err error) {
|
||||||
return isConfig && !isConfig2
|
return isConfig && !isConfig2
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if len(opts) > 0 {
|
||||||
|
if c, ok := opts[0].(*Config); ok {
|
||||||
|
config = c
|
||||||
|
} else {
|
||||||
|
opts = append([]Option{config}, opts...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var skipAfterInitialize bool
|
var skipAfterInitialize bool
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
if opt != nil {
|
if opt != nil {
|
||||||
|
|
|
||||||
14
vendor/gorm.io/gorm/migrator/migrator.go
generated
vendored
14
vendor/gorm.io/gorm/migrator/migrator.go
generated
vendored
|
|
@ -474,7 +474,6 @@ func (m Migrator) MigrateColumn(value interface{}, field *schema.Field, columnTy
|
||||||
// found, smart migrate
|
// found, smart migrate
|
||||||
fullDataType := strings.TrimSpace(strings.ToLower(m.DB.Migrator().FullDataTypeOf(field).SQL))
|
fullDataType := strings.TrimSpace(strings.ToLower(m.DB.Migrator().FullDataTypeOf(field).SQL))
|
||||||
realDataType := strings.ToLower(columnType.DatabaseTypeName())
|
realDataType := strings.ToLower(columnType.DatabaseTypeName())
|
||||||
|
|
||||||
var (
|
var (
|
||||||
alterColumn bool
|
alterColumn bool
|
||||||
isSameType = fullDataType == realDataType
|
isSameType = fullDataType == realDataType
|
||||||
|
|
@ -513,8 +512,19 @@ func (m Migrator) MigrateColumn(value interface{}, field *schema.Field, columnTy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check precision
|
// check precision
|
||||||
|
if realDataType == "decimal" || realDataType == "numeric" &&
|
||||||
|
regexp.MustCompile(realDataType+`\(.*\)`).FindString(fullDataType) != "" { // if realDataType has no precision,ignore
|
||||||
|
precision, scale, ok := columnType.DecimalSize()
|
||||||
|
if ok {
|
||||||
|
if !strings.HasPrefix(fullDataType, fmt.Sprintf("%s(%d,%d)", realDataType, precision, scale)) &&
|
||||||
|
!strings.HasPrefix(fullDataType, fmt.Sprintf("%s(%d)", realDataType, precision)) {
|
||||||
|
alterColumn = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if precision, _, ok := columnType.DecimalSize(); ok && int64(field.Precision) != precision {
|
if precision, _, ok := columnType.DecimalSize(); ok && int64(field.Precision) != precision {
|
||||||
if regexp.MustCompile(fmt.Sprintf("[^0-9]%d[^0-9]", field.Precision)).MatchString(m.DataTypeOf(field)) {
|
if regexp.MustCompile(fmt.Sprintf("[^0-9]%d[^0-9]", field.Precision)).MatchString(m.DataTypeOf(field)) {
|
||||||
alterColumn = true
|
alterColumn = true
|
||||||
|
|
|
||||||
30
vendor/gorm.io/gorm/schema/field.go
generated
vendored
30
vendor/gorm.io/gorm/schema/field.go
generated
vendored
|
|
@ -448,21 +448,30 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field {
|
||||||
}
|
}
|
||||||
|
|
||||||
// create valuer, setter when parse struct
|
// create valuer, setter when parse struct
|
||||||
func (field *Field) setupValuerAndSetter() {
|
func (field *Field) setupValuerAndSetter(modelType reflect.Type) {
|
||||||
// Setup NewValuePool
|
// Setup NewValuePool
|
||||||
field.setupNewValuePool()
|
field.setupNewValuePool()
|
||||||
|
|
||||||
// ValueOf returns field's value and if it is zero
|
// ValueOf returns field's value and if it is zero
|
||||||
fieldIndex := field.StructField.Index[0]
|
fieldIndex := field.StructField.Index[0]
|
||||||
switch {
|
switch {
|
||||||
case len(field.StructField.Index) == 1 && fieldIndex > 0:
|
case len(field.StructField.Index) == 1 && fieldIndex >= 0:
|
||||||
field.ValueOf = func(ctx context.Context, value reflect.Value) (interface{}, bool) {
|
field.ValueOf = func(ctx context.Context, v reflect.Value) (interface{}, bool) {
|
||||||
fieldValue := reflect.Indirect(value).Field(fieldIndex)
|
v = reflect.Indirect(v)
|
||||||
|
if v.Type() != modelType {
|
||||||
|
fieldValue := v.FieldByName(field.Name)
|
||||||
|
return fieldValue.Interface(), fieldValue.IsZero()
|
||||||
|
}
|
||||||
|
fieldValue := v.Field(fieldIndex)
|
||||||
return fieldValue.Interface(), fieldValue.IsZero()
|
return fieldValue.Interface(), fieldValue.IsZero()
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
field.ValueOf = func(ctx context.Context, v reflect.Value) (interface{}, bool) {
|
field.ValueOf = func(ctx context.Context, v reflect.Value) (interface{}, bool) {
|
||||||
v = reflect.Indirect(v)
|
v = reflect.Indirect(v)
|
||||||
|
if v.Type() != modelType {
|
||||||
|
fieldValue := v.FieldByName(field.Name)
|
||||||
|
return fieldValue.Interface(), fieldValue.IsZero()
|
||||||
|
}
|
||||||
for _, fieldIdx := range field.StructField.Index {
|
for _, fieldIdx := range field.StructField.Index {
|
||||||
if fieldIdx >= 0 {
|
if fieldIdx >= 0 {
|
||||||
v = v.Field(fieldIdx)
|
v = v.Field(fieldIdx)
|
||||||
|
|
@ -504,13 +513,20 @@ func (field *Field) setupValuerAndSetter() {
|
||||||
|
|
||||||
// ReflectValueOf returns field's reflect value
|
// ReflectValueOf returns field's reflect value
|
||||||
switch {
|
switch {
|
||||||
case len(field.StructField.Index) == 1 && fieldIndex > 0:
|
case len(field.StructField.Index) == 1 && fieldIndex >= 0:
|
||||||
field.ReflectValueOf = func(ctx context.Context, value reflect.Value) reflect.Value {
|
field.ReflectValueOf = func(ctx context.Context, v reflect.Value) reflect.Value {
|
||||||
return reflect.Indirect(value).Field(fieldIndex)
|
v = reflect.Indirect(v)
|
||||||
|
if v.Type() != modelType {
|
||||||
|
return v.FieldByName(field.Name)
|
||||||
|
}
|
||||||
|
return v.Field(fieldIndex)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
field.ReflectValueOf = func(ctx context.Context, v reflect.Value) reflect.Value {
|
field.ReflectValueOf = func(ctx context.Context, v reflect.Value) reflect.Value {
|
||||||
v = reflect.Indirect(v)
|
v = reflect.Indirect(v)
|
||||||
|
if v.Type() != modelType {
|
||||||
|
return v.FieldByName(field.Name)
|
||||||
|
}
|
||||||
for idx, fieldIdx := range field.StructField.Index {
|
for idx, fieldIdx := range field.StructField.Index {
|
||||||
if fieldIdx >= 0 {
|
if fieldIdx >= 0 {
|
||||||
v = v.Field(fieldIdx)
|
v = v.Field(fieldIdx)
|
||||||
|
|
|
||||||
13
vendor/gorm.io/gorm/schema/schema.go
generated
vendored
13
vendor/gorm.io/gorm/schema/schema.go
generated
vendored
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/ast"
|
"go/ast"
|
||||||
|
"path"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
@ -247,7 +248,7 @@ func ParseWithSpecialTableName(dest interface{}, cacheStore *sync.Map, namer Nam
|
||||||
schema.FieldsByBindName[bindName] = field
|
schema.FieldsByBindName[bindName] = field
|
||||||
}
|
}
|
||||||
|
|
||||||
field.setupValuerAndSetter()
|
field.setupValuerAndSetter(modelType)
|
||||||
}
|
}
|
||||||
|
|
||||||
prioritizedPrimaryField := schema.LookUpField("id")
|
prioritizedPrimaryField := schema.LookUpField("id")
|
||||||
|
|
@ -313,8 +314,14 @@ func ParseWithSpecialTableName(dest interface{}, cacheStore *sync.Map, namer Nam
|
||||||
for _, cbName := range callbackTypes {
|
for _, cbName := range callbackTypes {
|
||||||
if methodValue := callBackToMethodValue(modelValue, cbName); methodValue.IsValid() {
|
if methodValue := callBackToMethodValue(modelValue, cbName); methodValue.IsValid() {
|
||||||
switch methodValue.Type().String() {
|
switch methodValue.Type().String() {
|
||||||
case "func(*gorm.DB) error": // TODO hack
|
case "func(*gorm.DB) error":
|
||||||
reflect.Indirect(reflect.ValueOf(schema)).FieldByName(string(cbName)).SetBool(true)
|
expectedPkgPath := path.Dir(reflect.TypeOf(schema).Elem().PkgPath())
|
||||||
|
if inVarPkg := methodValue.Type().In(0).Elem().PkgPath(); inVarPkg == expectedPkgPath {
|
||||||
|
reflect.Indirect(reflect.ValueOf(schema)).FieldByName(string(cbName)).SetBool(true)
|
||||||
|
} else {
|
||||||
|
logger.Default.Warn(context.Background(), "In model %v, the hook function `%v(*gorm.DB) error` has an incorrect parameter type. The expected parameter type is `%v`, but the provided type is `%v`.", schema, cbName, expectedPkgPath, inVarPkg)
|
||||||
|
// PASS
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
logger.Default.Warn(context.Background(), "Model %v don't match %vInterface, should be `%v(*gorm.DB) error`. Please see https://gorm.io/docs/hooks.html", schema, cbName, cbName)
|
logger.Default.Warn(context.Background(), "Model %v don't match %vInterface, should be `%v(*gorm.DB) error`. Please see https://gorm.io/docs/hooks.html", schema, cbName, cbName)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
vendor/gorm.io/gorm/statement.go
generated
vendored
10
vendor/gorm.io/gorm/statement.go
generated
vendored
|
|
@ -341,7 +341,9 @@ func (stmt *Statement) BuildCondition(query interface{}, args ...interface{}) []
|
||||||
if where, ok := cs.Expression.(clause.Where); ok {
|
if where, ok := cs.Expression.(clause.Where); ok {
|
||||||
if len(where.Exprs) == 1 {
|
if len(where.Exprs) == 1 {
|
||||||
if orConds, ok := where.Exprs[0].(clause.OrConditions); ok {
|
if orConds, ok := where.Exprs[0].(clause.OrConditions); ok {
|
||||||
where.Exprs[0] = clause.AndConditions(orConds)
|
if len(orConds.Exprs) == 1 {
|
||||||
|
where.Exprs[0] = clause.AndConditions(orConds)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
conds = append(conds, clause.And(where.Exprs...))
|
conds = append(conds, clause.And(where.Exprs...))
|
||||||
|
|
@ -362,6 +364,9 @@ func (stmt *Statement) BuildCondition(query interface{}, args ...interface{}) []
|
||||||
|
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
column := clause.Column{Name: key, Table: curTable}
|
column := clause.Column{Name: key, Table: curTable}
|
||||||
|
if strings.Contains(key, ".") {
|
||||||
|
column = clause.Column{Name: key}
|
||||||
|
}
|
||||||
conds = append(conds, clause.Eq{Column: column, Value: v[key]})
|
conds = append(conds, clause.Eq{Column: column, Value: v[key]})
|
||||||
}
|
}
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
|
|
@ -374,6 +379,9 @@ func (stmt *Statement) BuildCondition(query interface{}, args ...interface{}) []
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
reflectValue := reflect.Indirect(reflect.ValueOf(v[key]))
|
reflectValue := reflect.Indirect(reflect.ValueOf(v[key]))
|
||||||
column := clause.Column{Name: key, Table: curTable}
|
column := clause.Column{Name: key, Table: curTable}
|
||||||
|
if strings.Contains(key, ".") {
|
||||||
|
column = clause.Column{Name: key}
|
||||||
|
}
|
||||||
switch reflectValue.Kind() {
|
switch reflectValue.Kind() {
|
||||||
case reflect.Slice, reflect.Array:
|
case reflect.Slice, reflect.Array:
|
||||||
if _, ok := v[key].(driver.Valuer); ok {
|
if _, ok := v[key].(driver.Valuer); ok {
|
||||||
|
|
|
||||||
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
|
|
@ -364,7 +364,7 @@ gorm.io/driver/mysql
|
||||||
# gorm.io/driver/sqlite v1.6.0
|
# gorm.io/driver/sqlite v1.6.0
|
||||||
## explicit; go 1.20
|
## explicit; go 1.20
|
||||||
gorm.io/driver/sqlite
|
gorm.io/driver/sqlite
|
||||||
# gorm.io/gorm v1.30.0
|
# gorm.io/gorm v1.30.1
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
gorm.io/gorm
|
gorm.io/gorm
|
||||||
gorm.io/gorm/callbacks
|
gorm.io/gorm/callbacks
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue