优化筛选条件实现
This commit is contained in:
@@ -224,53 +224,34 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
after := p.Args["after"]
|
after := p.Args["after"]
|
||||||
fields_str := strings.Join(fields, ",")
|
fields_str := strings.Join(fields, ",")
|
||||||
|
|
||||||
|
// 参数到 SQL 格式字符串的映射
|
||||||
|
var argToSQLFormat = map[string]string{
|
||||||
|
"id": "id=%d",
|
||||||
|
"width": "width=%d",
|
||||||
|
"height": "height=%d",
|
||||||
|
"content": "content='%s'",
|
||||||
|
"remark": "remark='%s'",
|
||||||
|
"description": "description='%s'",
|
||||||
|
"tags": "tags='%s'",
|
||||||
|
"rank": "rank='%s'",
|
||||||
|
"comment_num": "comment_num=%d",
|
||||||
|
"praise_count": "praise_count=%d",
|
||||||
|
"collect_count": "collect_count=%d",
|
||||||
|
"article_id": "article_id=%d",
|
||||||
|
"user_id": "user_id=%d",
|
||||||
|
"create_time": "create_time='%s'",
|
||||||
|
"update_time": "update_time='%s'",
|
||||||
|
}
|
||||||
|
|
||||||
// 筛选条件
|
// 筛选条件
|
||||||
var where []string
|
var where []string
|
||||||
if p.Args["id"] != nil {
|
for arg, format := range argToSQLFormat {
|
||||||
where = append(where, fmt.Sprintf("id=%d", p.Args["id"]))
|
if p.Args[arg] != nil {
|
||||||
|
where = append(where, fmt.Sprintf(format, p.Args[arg]))
|
||||||
}
|
}
|
||||||
if p.Args["width"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("width=%d", p.Args["width"]))
|
|
||||||
}
|
|
||||||
if p.Args["height"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("height=%d", p.Args["height"]))
|
|
||||||
}
|
|
||||||
if p.Args["content"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("content='%s'", p.Args["content"]))
|
|
||||||
}
|
|
||||||
if p.Args["remark"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("remark='%s'", p.Args["remark"]))
|
|
||||||
}
|
|
||||||
if p.Args["description"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("description='%s'", p.Args["description"]))
|
|
||||||
}
|
|
||||||
if p.Args["tags"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("tags='%s'", p.Args["tags"]))
|
|
||||||
}
|
|
||||||
if p.Args["rank"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("rank='%s'", p.Args["rank"]))
|
|
||||||
}
|
|
||||||
if p.Args["comment_num"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("comment_num=%d", p.Args["comment_num"]))
|
|
||||||
}
|
|
||||||
if p.Args["praise_count"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("praise_count=%d", p.Args["praise_count"]))
|
|
||||||
}
|
|
||||||
if p.Args["collect_count"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("collect_count=%d", p.Args["collect_count"]))
|
|
||||||
}
|
|
||||||
if p.Args["article_id"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("article_id=%d", p.Args["article_id"]))
|
|
||||||
}
|
|
||||||
if p.Args["user_id"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("user_id=%d", p.Args["user_id"]))
|
|
||||||
}
|
|
||||||
if p.Args["create_time"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("create_time='%s'", p.Args["create_time"]))
|
|
||||||
}
|
|
||||||
if p.Args["update_time"] != nil {
|
|
||||||
where = append(where, fmt.Sprintf("update_time='%s'", p.Args["update_time"]))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 特殊处理 text 参数
|
||||||
if p.Args["text"] != nil {
|
if p.Args["text"] != nil {
|
||||||
id_list := models.ElasticsearchSearch(p.Args["text"].(string)).GetIDList()
|
id_list := models.ElasticsearchSearch(p.Args["text"].(string)).GetIDList()
|
||||||
id_list_str := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(id_list)), ","), "[]")
|
id_list_str := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(id_list)), ","), "[]")
|
||||||
@@ -284,6 +265,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
}
|
}
|
||||||
where = append(where, fmt.Sprintf("id IN (%s)", id_list_str))
|
where = append(where, fmt.Sprintf("id IN (%s)", id_list_str))
|
||||||
}
|
}
|
||||||
|
|
||||||
where_str := strings.Join(where, " AND ")
|
where_str := strings.Join(where, " AND ")
|
||||||
|
|
||||||
// 执行查询
|
// 执行查询
|
||||||
|
Reference in New Issue
Block a user