This repo use for get data from mongoDB as paginated list (pagination + filter + sort)
- import package
import componentsList "github.com/mortezakhademan/paginated-list"
- prepare list variable:
- set filters
- set sort field
- set result type
- set page-no
- set page size
list := componentsList.NewList()
list.Filters = nil
list.Sort = nil
if pageNo > 0 {
list.PageNo = pageNo
}
if pageSize > 0 {
list.PageSize = pageSize
}
list.ResultType = 0
- add pipeline stages if you need stages (Optional)
list.AddPipelineStage(bson.D{{"$match", bson.D{{"status", bson.M{"$ne": user.USER_STATUS_USER_STATUS_DELETED}}}}})
- call RunQuery function
paginatedItems:= []*ResultModel{}
list.RunQuery(collection, map[string]*models.ColumnInfo{
"id": models.NewObjectIDColumnInfo("_id", "in"),
"type": models.NewIntColumnInfo("type", "type"),
"status": models.NewIntColumnInfo("status", "status"),
"lastName": models.NewColumnInfo("last_name", "like"),
"firstName": models.NewColumnInfo("first_name", "like"),
"mobile": models.NewColumnInfo("mobile.mobile", "like"),
"createdAt": models.NewDateColumnInfo("created_at", "created_at"),
}, "-createdAt", &paginatedItems)
Now, list variable contains paginated list info (total items count) + page Items