MCPcopy Create free account
hub / github.com/aiprodcoder/MIXAPI / SearchChannels

Function SearchChannels

model/channel.go:264–311  ·  view source on GitHub ↗
(keyword string, group string, model string, idSort bool)

Source from the content-addressed store, hash-verified

262}
263
264func SearchChannels(keyword string, group string, model string, idSort bool) ([]*Channel, error) {
265 var channels []*Channel
266 modelsCol := "`models`"
267
268 // 如果是 PostgreSQL,使用双引号
269 if common.UsingPostgreSQL {
270 modelsCol = `"models"`
271 }
272
273 baseURLCol := "`base_url`"
274 // 如果是 PostgreSQL,使用双引号
275 if common.UsingPostgreSQL {
276 baseURLCol = `"base_url"`
277 }
278
279 order := "priority desc"
280 if idSort {
281 order = "id desc"
282 }
283
284 // 构造基础查询
285 baseQuery := DB.Model(&Channel{}).Omit("key")
286
287 // 构造WHERE子句
288 var whereClause string
289 var args []interface{}
290 if group != "" && group != "null" {
291 var groupCondition string
292 if common.UsingMySQL {
293 groupCondition = `CONCAT(',', ` + commonGroupCol + `, ',') LIKE ?`
294 } else {
295 // sqlite, PostgreSQL
296 groupCondition = `(',' || ` + commonGroupCol + ` || ',') LIKE ?`
297 }
298 whereClause = "(id = ? OR name LIKE ? OR " + commonKeyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition
299 args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%", "%,"+group+",%")
300 } else {
301 whereClause = "(id = ? OR name LIKE ? OR " + commonKeyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + " LIKE ?"
302 args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%")
303 }
304
305 // 执行查询
306 err := baseQuery.Where(whereClause, args...).Order(order).Find(&channels).Error
307 if err != nil {
308 return nil, err
309 }
310 return channels, nil
311}
312
313func GetChannelById(id int, selectAll bool) (*Channel, error) {
314 channel := &Channel{Id: id}

Callers 1

SearchChannelsFunction · 0.92

Calls 1

String2IntFunction · 0.92

Tested by

no test coverage detected