package reptmod import ( "91porn-server/common/pageopt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" ) type Matcher = pageopt.Matcher // InObjTypeMatch type InObjTypeMatch struct { Typs []ReportObjType } func (i *InObjTypeMatch) New() Matcher { return pageopt.NewInMatch("objType", i.Typs) } // TypesMatch type TypesMatch struct { Types *string } func (t *TypesMatch) New() Matcher { return pageopt.NewAssignMatch("types", t.Types) } // CreatedAtGTEAndLTMatch type CreatedAtGTEAndLTMatch = pageopt.CreatedAtGTEAndLTMatch func List(sort bson.D, skip, limit int64, matchers ...pageopt.Matcher) ([]Report, error) { filter := pageopt.MergeM(matchers) opt := (&options.FindOptions{}). SetSort(sort). SetSkip(skip). SetLimit(limit) reportList := make([]Report, 0, limit) if err := coll(nil).Find(&reportList, filter, opt); err != nil { return nil, err } return reportList, nil } func Count(matchers ...pageopt.Matcher) (int64, error) { filter := pageopt.MergeM(matchers) count, err := coll(nil).Count(filter) if err != nil { return 0, err } return count, nil }