feat: support searching channels by base url

This commit is contained in:
JoeyLearnsToCode
2025-04-28 11:38:53 +08:00
parent 1a9ebb54b2
commit a9b9d23586
3 changed files with 22 additions and 11 deletions

View File

@@ -119,10 +119,15 @@ func SearchChannels(keyword string, group string, model string, idSort bool) ([]
// 如果是 PostgreSQL使用双引号 // 如果是 PostgreSQL使用双引号
if common.UsingPostgreSQL { if common.UsingPostgreSQL {
keyCol = `"key"`
modelsCol = `"models"` modelsCol = `"models"`
} }
baseURLCol := "`base_url`"
// 如果是 PostgreSQL使用双引号
if common.UsingPostgreSQL {
baseURLCol = `"base_url"`
}
order := "priority desc" order := "priority desc"
if idSort { if idSort {
order = "id desc" order = "id desc"
@@ -142,11 +147,11 @@ func SearchChannels(keyword string, group string, model string, idSort bool) ([]
// sqlite, PostgreSQL // sqlite, PostgreSQL
groupCondition = `(',' || ` + groupCol + ` || ',') LIKE ?` groupCondition = `(',' || ` + groupCol + ` || ',') LIKE ?`
} }
whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition
args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%", "%,"+group+",%") args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%", "%,"+group+",%")
} else { } else {
whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + " LIKE ?" whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + " LIKE ?"
args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%") 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"` modelsCol = `"models"`
} }
baseURLCol := "`base_url`"
// 如果是 PostgreSQL使用双引号
if common.UsingPostgreSQL {
baseURLCol = `"base_url"`
}
order := "priority desc" order := "priority desc"
if idSort { if idSort {
order = "id desc" order = "id desc"
@@ -469,11 +480,11 @@ func SearchTags(keyword string, group string, model string, idSort bool) ([]*str
// sqlite, PostgreSQL // sqlite, PostgreSQL
groupCondition = `(',' || ` + groupCol + ` || ',') LIKE ?` groupCondition = `(',' || ` + groupCol + ` || ',') LIKE ?`
} }
whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + ` LIKE ? AND ` + groupCondition
args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%", "%,"+group+",%") args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%", "%,"+group+",%")
} else { } else {
whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ?) AND " + modelsCol + " LIKE ?" whereClause = "(id = ? OR name LIKE ? OR " + keyCol + " = ? OR " + baseURLCol + " LIKE ?) AND " + modelsCol + " LIKE ?"
args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%") args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+keyword+"%", "%"+model+"%")
} }
subQuery := baseQuery.Where(whereClause, args...). subQuery := baseQuery.Where(whereClause, args...).

View File

@@ -1276,7 +1276,7 @@ const ChannelsTable = () => {
<Form.Input <Form.Input
field='search_keyword' field='search_keyword'
label={t('搜索渠道关键词')} label={t('搜索渠道关键词')}
placeholder={t('搜索渠道的 ID名称密钥 ...')} placeholder={t('搜索渠道的 ID名称密钥和API地址 ...')}
value={searchKeyword} value={searchKeyword}
loading={searching} loading={searching}
onChange={(v) => { onChange={(v) => {

View File

@@ -124,7 +124,7 @@
"已成功开始测试所有已启用通道,请刷新页面查看结果。": "Successfully started testing all enabled channels. Please refresh page to view results.", "已成功开始测试所有已启用通道,请刷新页面查看结果。": "Successfully started testing all enabled channels. Please refresh page to view results.",
"通道 ${name} 余额更新成功!": "Channel ${name} quota updated successfully!", "通道 ${name} 余额更新成功!": "Channel ${name} quota updated successfully!",
"已更新完毕所有已启用通道余额!": "Updated quota for all enabled channels!", "已更新完毕所有已启用通道余额!": "Updated quota for all enabled channels!",
"搜索渠道的 ID名称密钥 ...": "Search channel ID, name and key...", "搜索渠道的 ID名称密钥和API地址 ...": "Search channel ID, name, key and Base URL...",
"名称": "Name", "名称": "Name",
"分组": "Group", "分组": "Group",
"类型": "Type", "类型": "Type",