datatypes.JSONQuery support empty keys
- Dominant language
- Go
- Stars
- 831
- Forks
- 124
- PR merge metrics
- No merged PRs in 30d
Description
## Describe the feature
I want query json columns with sql ``` SELECT * FROM `group` WHERE JSON_EXTRACT(`users`,'$') LIKE '%admin%'```
But I use ```datatypes.JSONQuery("files").Likes("%"+user+"%")``` and get error
Because method not support empty key
https://github.com/go-gorm/datatypes/blob/610acc2b938cb267835ae2e2288786453e3d9c9f/json.go#L188
```
package main
import (
"fmt"
"strconv"
"strings"
"gorm.io/datatypes"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
type Group struct {
ID uint `gorm:"primarykey"`
Users datatypes.JSONSlice[string] `gorm:"type:json" `
Name string
}
func main() {
dsn := "root:123456@tcp(localhost:3306)/test_db?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.New(
mysql.Config{
DSN: dsn,
DefaultStringSize: 256,
DisableDatetimePrecision: true,
DontSupportRenameIndex: true,
DontSupportRenameColumn: true,
SkipInitializeWithVersion: false,
}),
)
if err != nil {
panic(err)
}
var groups []Group
user := "admin"
db.Debug().
// Where(datatypes.JSONQuery("users").Likes("%"+user+"%")). // want to support
Where("JSON_EXTRACT(`users`,'$') LIKE ?", "%"+user+"%"). // current use
Find(&groups)
}
## Motivation
## Related Issues
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.