go-gorm / go-gorm/datatypes

datatypes.JSONQuery support empty keys

Open
#273 0 comments 0 reactions 1 assignee Claimed by @jinzhu View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.