合并join

This commit is contained in:
2024-11-17 17:58:25 +08:00
parent a1ce51e828
commit ac46407a30

View File

@@ -704,42 +704,33 @@ func NewSchema(config Config) (graphql.Schema, error) {
)) ))
} }
var collect_params []goqu.Expression = []goqu.Expression{
goqu.I("web_images.id").Eq(goqu.I("web_collect.image_id")),
}
// 数据库中筛选:用户收藏的截图 // 数据库中筛选:用户收藏的截图
if p.Args["collect"] != nil { if p.Args["collect"] != nil {
query = query.Join(goqu.T("web_collect"), goqu.On( collect_params = append(collect_params, goqu.I("web_collect.user_id").Eq(p.Args["collect"]))
goqu.I("web_images.id").Eq(goqu.I("web_collect.image_id")),
goqu.I("web_collect.user_id").Eq(p.Args["collect"]),
))
} }
// 数据库中筛选:收藏夹中的截图 // 数据库中筛选:收藏夹中的截图
if p.Args["collect_id"] != nil { if p.Args["collect_id"] != nil {
query = query.Join(goqu.T("web_collect"), goqu.On( collect_params = append(collect_params, goqu.I("web_collect.collect_id").Eq(p.Args["collect_id"]))
goqu.I("web_images.id").Eq(goqu.I("web_collect.image_id")),
goqu.I("web_collect.collect_id").Eq(p.Args["collect_id"]),
))
} }
// 数据库中筛选:收藏夹中的截图 // 数据库中筛选:收藏夹中的截图
if p.Args["explorer_id"] != nil { if p.Args["explorer_id"] != nil {
query = query.Join(goqu.T("web_collect"), goqu.On( collect_params = append(collect_params, goqu.I("web_collect.explorer_id").Eq(p.Args["explorer_id"]))
goqu.I("web_images.id").Eq(goqu.I("web_collect.image_id")), }
goqu.I("web_collect.explorer_id").Eq(p.Args["explorer_id"]),
)) if len(collect_params) > 1 {
query = query.Join(goqu.T("web_collect"), goqu.On(collect_params...))
} }
var conditions []goqu.Expression = []goqu.Expression{ var conditions []goqu.Expression = []goqu.Expression{
goqu.I("web_images.article_id").Eq(goqu.I("web_article.id")), goqu.I("web_images.article_id").Eq(goqu.I("web_article.id")),
} }
// 按游戏标签筛选图像
if p.Args["article_tags"] != nil {
tags := strings.Split(strings.ReplaceAll(p.Args["article_tags"].(string), " ", ""), ", ")
for _, tag := range tags {
conditions = append(conditions, goqu.L("MATCH(web_article.tags) AGAINST (? IN NATURAL LANGUAGE MODE)", tag))
}
}
// 按游戏风格筛选图像 // 按游戏风格筛选图像
if p.Args["style"] != nil { if p.Args["style"] != nil {
conditions = append(conditions, goqu.I("web_article.style").Eq(p.Args["style"])) conditions = append(conditions, goqu.I("web_article.style").Eq(p.Args["style"]))
@@ -766,6 +757,14 @@ func NewSchema(config Config) (graphql.Schema, error) {
conditions = append(conditions, goqu.I("web_article.category_id").In(category_ids)) conditions = append(conditions, goqu.I("web_article.category_id").In(category_ids))
} }
// 按游戏标签筛选图像
if p.Args["article_tags"] != nil {
tags := strings.Split(strings.ReplaceAll(p.Args["article_tags"].(string), " ", ""), ", ")
for _, tag := range tags {
conditions = append(conditions, goqu.L("MATCH(web_article.tags) AGAINST (? IN NATURAL LANGUAGE MODE)", tag))
}
}
if len(conditions) > 1 { if len(conditions) > 1 {
query = query.Join(goqu.T("web_article"), goqu.On(conditions...)) query = query.Join(goqu.T("web_article"), goqu.On(conditions...))
} }