fix: 修复mysql兼容问题

This commit is contained in:
CalciumIon 2024-08-08 20:45:41 +08:00
parent e614ca370a
commit 04f0084d97

View File

@ -90,11 +90,13 @@ func GetAllChannels(startIdx int, num int, selectAll bool, idSort bool) ([]*Chan
func SearchChannels(keyword string, group string, model string) ([]*Channel, error) { func SearchChannels(keyword string, group string, model string) ([]*Channel, error) {
var channels []*Channel var channels []*Channel
keyCol := "`key`" keyCol := "`key`"
groupCol := "`group`"
modelsCol := "`models`" modelsCol := "`models`"
// 如果是 PostgreSQL使用双引号 // 如果是 PostgreSQL使用双引号
if common.UsingPostgreSQL { if common.UsingPostgreSQL {
keyCol = `"key"` keyCol = `"key"`
groupCol = `"group"`
modelsCol = `"models"` modelsCol = `"models"`
} }
@ -105,7 +107,13 @@ func SearchChannels(keyword string, group string, model string) ([]*Channel, err
var whereClause string var whereClause string
var args []interface{} var args []interface{}
if group != "" && group != "null" { if group != "" && group != "null" {
whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + ` LIKE ? AND (',' || "group" || ',') LIKE ?` var groupCondition string
if common.UsingPostgreSQL {
groupCondition = `(',' || ` + groupCol + ` || ',') LIKE ?`
} else {
groupCondition = `CONCAT(',', ` + groupCol + `, ',') LIKE ?`
}
whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition
args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%", "%,"+group+",%") args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%", "%,"+group+",%")
} else { } else {
whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + " LIKE ?" whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + " LIKE ?"