From a9b9d23586cce48bd826f3f0964ecafda6c54b1f Mon Sep 17 00:00:00 2001 From: JoeyLearnsToCode Date: Mon, 28 Apr 2025 11:38:53 +0800 Subject: [PATCH] feat: support searching channels by base url --- model/channel.go | 29 ++++++++++++++++++++--------- web/src/components/ChannelsTable.js | 2 +- web/src/i18n/locales/en.json | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/model/channel.go b/model/channel.go index 91f5384c..41e5e371 100644 --- a/model/channel.go +++ b/model/channel.go @@ -119,10 +119,15 @@ func SearchChannels(keyword string, group string, model string, idSort bool) ([] // 如果是 PostgreSQL,使用双引号 if common.UsingPostgreSQL { - keyCol = `"key"` modelsCol = `"models"` } + baseURLCol := "`base_url`" + // 如果是 PostgreSQL,使用双引号 + if common.UsingPostgreSQL { + baseURLCol = `"base_url"` + } + order := "priority desc" if idSort { order = "id desc" @@ -142,11 +147,11 @@ func SearchChannels(keyword string, group string, model string, idSort bool) ([] // sqlite, PostgreSQL groupCondition = `(',' || ` + groupCol + ` || ',') LIKE ?` } - whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition - args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%", "%,"+group+",%") + whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition + args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%", "%,"+group+",%") } else { - whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + " LIKE ?" - args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%") + whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + " LIKE ?" + args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%") } // 执行查询 @@ -450,6 +455,12 @@ func SearchTags(keyword string, group string, model string, idSort bool) ([]*str modelsCol = `"models"` } + baseURLCol := "`base_url`" + // 如果是 PostgreSQL,使用双引号 + if common.UsingPostgreSQL { + baseURLCol = `"base_url"` + } + order := "priority desc" if idSort { order = "id desc" @@ -469,11 +480,11 @@ func SearchTags(keyword string, group string, model string, idSort bool) ([]*str // sqlite, PostgreSQL groupCondition = `(',' || ` + groupCol + ` || ',') LIKE ?` } - whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition - args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%", "%,"+group+",%") + whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition + args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%", "%,"+group+",%") } else { - whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + " LIKE ?" - args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%") + whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + " LIKE ?" + args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%") } subQuery := baseQuery.Where(whereClause, args...). diff --git a/web/src/components/ChannelsTable.js b/web/src/components/ChannelsTable.js index 15b4059a..3425beea 100644 --- a/web/src/components/ChannelsTable.js +++ b/web/src/components/ChannelsTable.js @@ -1276,7 +1276,7 @@ const ChannelsTable = () => { { diff --git a/web/src/i18n/locales/en.json b/web/src/i18n/locales/en.json index 8aaaab77..59d93f6a 100644 --- a/web/src/i18n/locales/en.json +++ b/web/src/i18n/locales/en.json @@ -124,7 +124,7 @@ "已成功开始测试所有已启用通道,请刷新页面查看结果。": "Successfully started testing all enabled channels. Please refresh page to view results.", "通道 ${name} 余额更新成功!": "Channel ${name} quota updated successfully!", "已更新完毕所有已启用通道余额!": "Updated quota for all enabled channels!", - "搜索渠道的 ID,名称和密钥 ...": "Search channel ID, name and key...", + "搜索渠道的 ID,名称,密钥和API地址 ...": "Search channel ID, name, key and Base URL...", "名称": "Name", "分组": "Group", "类型": "Type",