diff --git a/api/graphql.go b/api/graphql.go index fbfedfe..9f1cb77 100644 --- a/api/graphql.go +++ b/api/graphql.go @@ -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(