go-gorm / datatypes

GORM Customized Data Types Collection
https://gorm.io/docs/data_types.html
MIT License
714 stars 108 forks source link

Greater/Lesser function for JSONQuery #234

Open deorth-kku opened 10 months ago

deorth-kku commented 10 months ago

It would be good to have something like this.

DB.First(&user, datatypes.JSONQuery("attributes").Lesser("age", 35))

// MySQL
// SELECT * FROM `user` WHERE JSON_EXTRACT(`attributes`, '$.age') < 35

DB.First(&user, datatypes.JSONQuery("attributes").Greater("age", 35))

// MySQL
// SELECT * FROM `user` WHERE JSON_EXTRACT(`attributes`, '$.age') > 35

Of course, we will need these as well.

DB.First(&user, datatypes.JSONQuery("attributes").NotLesser("age", 35))

// MySQL
// SELECT * FROM `user` WHERE JSON_EXTRACT(`attributes`, '$.age') >= 35

DB.First(&user, datatypes.JSONQuery("attributes").NotGreater("age", 35))

// MySQL
// SELECT * FROM `user` WHERE JSON_EXTRACT(`attributes`, '$.age') <= 35

Finally,

DB.First(&user, datatypes.JSONQuery("attributes").NotEquals("age", 35))

// MySQL
// SELECT * FROM `user` WHERE JSON_EXTRACT(`attributes`, '$.age') >< 35