数据库中筛选:收藏夹中的截图

This commit is contained in:
2024-11-11 00:32:06 +08:00
parent c2c14444a9
commit a55f5f0a78

View File

@@ -203,6 +203,17 @@ func NewSchema(config Config) (graphql.Schema, error) {
}
return false, nil
}},
"collect_id": &graphql.Field{Type: graphql.Int, Description: "当前用户收藏ID", Resolve: func(p graphql.ResolveParams) (interface{}, error) {
var user_id = p.Context.Value("user_id").(int)
if user_id != 0 {
var collect_id int
if err := db.Table("web_collect").Where("user_id = ?", user_id).Where("image_id = ?", p.Source.(Image).ID).First(&collect_id); err != nil {
return nil, nil
}
return collect_id, nil
}
return nil, nil
}},
"text": &graphql.Field{
Type: graphql.NewList(graphql.NewObject(graphql.ObjectConfig{
Name: "Text",
@@ -398,6 +409,8 @@ func NewSchema(config Config) (graphql.Schema, error) {
},
}),
Args: graphql.FieldConfigArgument{
"collect_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定收藏夹的"},
"collect": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定用户收藏过的"},
"praise": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定用户点赞过的"},
"follower": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取指定ID用户的关注列表发布的图像"},
"interest": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取指定ID用户的兴趣推荐图像"},
@@ -518,7 +531,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
// 如果没有外部排序则使用指定排序
if p.Args["text"] == nil && p.Args["similar"] == nil {
query = query.Select("web_images.id", goqu.L(
fmt.Sprintf("ROW_NUMBER() OVER(ORDER BY %s %s)", p.Args["sort"], p.Args["order"]),
fmt.Sprintf("ROW_NUMBER() OVER(ORDER BY web_images.%s %s)", p.Args["sort"], p.Args["order"]),
).As("row_num"))
}
@@ -563,6 +576,22 @@ func NewSchema(config Config) (graphql.Schema, error) {
))
}
// 数据库中筛选:用户收藏的截图
if p.Args["collect"] != nil {
query = query.Join(goqu.T("web_collect"), goqu.On(
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 {
query = query.Join(goqu.T("web_collect"), goqu.On(
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["device"] != nil {
query = query.Join(goqu.T("web_article"), goqu.On(