/
dalCategory.go
55 lines (45 loc) · 1.31 KB
/
dalCategory.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package dal
import (
"github.com/GwentAPI/gwentapi/dataLayer/models"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type PageQueryType int
const (
AllCards PageQueryType = 1 << iota
RarityFiltered
LeaderFiltered
FactionFiltered
)
type (
DalCategory struct {
collection *mgo.Collection
}
)
func NewDalCategory(ds *DataStore) *DalCategory {
return &DalCategory{ds.Collection("categories")}
}
func (dc DalCategory) Fetch(uuid []byte) (*models.Category, error) {
result := models.Category{}
err := dc.collection.Find(bson.M{"uuid": uuid}).One(&result)
return &result, err
}
func (dc DalCategory) FetchFromArrayID(categoriesID []bson.ObjectId) (*[]models.Category, error) {
results := []models.Category{}
err := dc.collection.Find(bson.M{"_id": bson.M{"$in": categoriesID}}).All(&results)
return &results, err
}
func (dc DalCategory) FetchAll() (*[]models.Category, error) {
results := []models.Category{}
err := dc.collection.Find(nil).Sort("name").All(&results)
return &results, err
}
func (dc DalCategory) FetchAllPaging(limit int, offset int) (*[]models.Category, error) {
results := []models.Category{}
err := dc.collection.Find(nil).Limit(limit).Sort("name").Skip(offset).All(&results)
return &results, err
}
func (dc DalCategory) Count() (int, error) {
result, err := dc.collection.Count()
return result, err
}