package likemod import ( "91porn-server/common/pageopt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" "time" ) type Matcher = pageopt.Matcher // CreatedAtGTEMatch type CreatedAtGTEMatch struct { GTE *time.Time } func (s *CreatedAtGTEMatch) New() Matcher { return pageopt.NewGTEMatch("createdAt", s.GTE) } // LikedUserIDMatch type LikedUserIDMatch struct { LikedUserID *uint64 } func (t *LikedUserIDMatch) New() Matcher { return pageopt.NewAssignMatch("likedUserID", t.LikedUserID) } // UserIDMatch type UserIDMatch struct { UserID *uint64 } func (t *UserIDMatch) New() Matcher { return pageopt.NewAssignMatch("userID", t.UserID) } // List func List(sort bson.D, skip, limit int64, matchers ...Matcher) ([]Like, error) { filter := pageopt.MergeM(matchers) opt := &options.FindOptions{} if len(sort) != 0 { opt.SetSort(sort) } opt.SetSkip(skip) opt.SetLimit(limit) list := make([]Like, 0, limit) err := coll(nil).Find(&list, filter, opt) if err != nil { return nil, err } return list, nil } // Count func Count(matchers ...Matcher) (int64, error) { filter := pageopt.MergeM(matchers) count, err := coll(nil).Count(filter) if err != nil { return 0, err } return count, nil }