优化筛选条件实现
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