feat: support searching channels by base url
This commit is contained in:
@@ -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...).
|
||||||
|
|||||||
@@ -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) => {
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user