diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 2a92159..4b30f16 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: [ '1.24' ] + go-version: [ '1.24.1' ] steps: - uses: actions/checkout@v3 diff --git a/go.mod b/go.mod index 6809dc1..dc19a96 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/google/uuid v1.3.0 github.com/ing-bank/gormtestutil v0.0.0 github.com/stretchr/testify v1.8.0 - gorm.io/gorm v1.26.0 + gorm.io/gorm v1.30.0 ) require ( @@ -16,7 +16,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/mattn/go-sqlite3 v1.14.15 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/text v0.25.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gorm.io/driver/sqlite v1.4.3 // indirect ) diff --git a/go.sum b/go.sum index f7bfc2c..d8e15de 100644 --- a/go.sum +++ b/go.sum @@ -26,8 +26,8 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= @@ -37,5 +37,5 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/sqlite v1.4.3 h1:HBBcZSDnWi5BW3B3rwvVTc510KGkBkexlOg0QrmLUuU= gorm.io/driver/sqlite v1.4.3/go.mod h1:0Aq3iPO+v9ZKbcdiz8gLWRw5VOPcBOPUQJFLq5e2ecI= gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= -gorm.io/gorm v1.26.0 h1:9lqQVPG5aNNS6AyHdRiwScAVnXHg/L/Srzx55G5fOgs= -gorm.io/gorm v1.26.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs= +gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= diff --git a/query.go b/query.go index 4673ccc..f41ea38 100644 --- a/query.go +++ b/query.go @@ -23,14 +23,14 @@ func (d *gormLike) replaceExpressions(db *gorm.DB, expressions []clause.Expressi cond.Exprs = d.replaceExpressions(db, cond.Exprs) expressions[index] = cond case clause.Eq: - columnName, columnOk := cond.Column.(string) + column, columnOk := cond.Column.(clause.Column) if !columnOk { continue } // Get the `gormlike` value var tagValue string - dbField, ok := db.Statement.Schema.FieldsByDBName[columnName] + dbField, ok := db.Statement.Schema.FieldsByDBName[column.Name] if ok { tagValue = dbField.Tag.Get(tagName) } @@ -55,7 +55,7 @@ func (d *gormLike) replaceExpressions(db *gorm.DB, expressions []clause.Expressi continue } - condition := fmt.Sprintf("CAST(%s as varchar) LIKE ?", cond.Column) + condition := fmt.Sprintf("CAST(%s as varchar) LIKE ?", column.Name) if d.replaceCharacter != "" { value = strings.ReplaceAll(value, d.replaceCharacter, "%") @@ -63,14 +63,14 @@ func (d *gormLike) replaceExpressions(db *gorm.DB, expressions []clause.Expressi expressions[index] = db.Session(&gorm.Session{NewDB: true}).Where(condition, value).Statement.Clauses["WHERE"].Expression case clause.IN: - columnName, columnOk := cond.Column.(string) + column, columnOk := cond.Column.(clause.Column) if !columnOk { continue } // Get the `gormlike` value var tagValue string - dbField, ok := db.Statement.Schema.FieldsByDBName[columnName] + dbField, ok := db.Statement.Schema.FieldsByDBName[column.Name] if ok { tagValue = dbField.Tag.Get(tagName) } @@ -95,11 +95,11 @@ func (d *gormLike) replaceExpressions(db *gorm.DB, expressions []clause.Expressi continue } - condition := fmt.Sprintf("%s = ?", cond.Column) + condition := fmt.Sprintf("%s = ?", column.Name) // If there are no % AND there aren't only replaceable characters, just skip it because it's a normal query if strings.Contains(value, "%") || (d.replaceCharacter != "" && strings.Contains(value, d.replaceCharacter)) { - condition = fmt.Sprintf("CAST(%s as varchar) LIKE ?", cond.Column) + condition = fmt.Sprintf("CAST(%s as varchar) LIKE ?", column.Name) if d.replaceCharacter != "" { value = strings.ReplaceAll(value, d.replaceCharacter, "%") diff --git a/query_test.go b/query_test.go index eab1267..f7aae61 100644 --- a/query_test.go +++ b/query_test.go @@ -656,7 +656,7 @@ func TestGormLike_Initialize_ProcessUnknownFields(t *testing.T) { var actual []ObjectB err = db.Where(testData.filter).Find(&actual).Error - assert.Equal(t, "no such column: unknown_field", err.Error()) + assert.Equal(t, "no such column: object_bs.unknown_field", err.Error()) assert.Nil(t, actual) }) }