From 92fa9e8a2ca1685b42cee600bcbb52abd4f8f45d Mon Sep 17 00:00:00 2001 From: satori Date: Tue, 3 Dec 2024 05:49:06 +0800 Subject: [PATCH] order --- api/collect.go | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/api/collect.go b/api/collect.go index e31e083..adbe334 100644 --- a/api/collect.go +++ b/api/collect.go @@ -6,23 +6,23 @@ import ( "github.com/graphql-go/graphql" "github.com/thoas/go-funk" + "gorm.io/gorm/clause" ) type Collection struct { - ID int `json:"id" gorm:"primaryKey"` - Title string `json:"title"` - Content string `json:"content"` - Type int `json:"type"` - Thumbnail string `json:"thumbnail"` - Num int `json:"num"` - Fans int `json:"fans"` - UserId int `json:"user_id"` - ArticleId int `json:"article_id"` - CreateTime time.Time `json:"create_time"` - UpdateTime time.Time `json:"update_time"` - User User `json:"user" gorm:"foreignKey:UserId;references:ID"` - PraiseCount int `json:"praise_count" gorm:"default:0"` - Praise bool `json:"praise" gorm:"-"` + ID int `json:"id" gorm:"primaryKey"` + Title string `json:"title"` + Content string `json:"content"` + Type int `json:"type"` + Thumbnail string `json:"thumbnail"` + Num int `json:"num"` + Fans int `json:"fans"` + UserId int `json:"user_id"` + ArticleId int `json:"article_id"` + CreateTime time.Time `json:"create_time"` + UpdateTime time.Time `json:"update_time"` + User User `json:"user" gorm:"foreignKey:UserId;references:ID"` + Fan bool `json:"praise" gorm:"-"` } func (Collection) TableName() string { @@ -78,16 +78,19 @@ var CollectionItems = &graphql.Field{ limit = p.Args["first"].(int) } - if err := db.Limit(limit).Preload("User").Find(&collects).Error; err != nil { + order := clause.OrderByColumn{ + Column: clause.Column{Name: p.Args["sort"].(string)}, + Desc: p.Args["order"].(string) == "DESC", + } + if err := db.Limit(limit).Preload("User").Order(order).Find(&collects).Error; err != nil { fmt.Println(err.Error()) return nil, err } var items = ListItem(p.Info.FieldASTs[0].SelectionSet.Selections) - if funk.Contains(items, "praise_count") { + if funk.Contains(items, "fan") { for i := range collects { - collects[i].PraiseCount = collects[i].Fans - collects[i].Praise = false + collects[i].Fan = false } }