-
Notifications
You must be signed in to change notification settings - Fork 0
/
siteRepository.go
58 lines (52 loc) · 1.27 KB
/
siteRepository.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
56
57
58
package data
import (
"time"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"github.com/alainglez/go-smoke/models"
)
type SiteRepository struct {
C *mgo.Collection
}
func (r *SiteRepository) Create(site *models.Site) error {
obj_id := bson.NewObjectId()
site.Id = obj_id
site.CreatedOn = time.Now()
err := r.C.Insert(&site)
return err
}
func (r *SiteRepository) Update(site *models.Site) error {
// partial update on MogoDB
err := r.C.Update(bson.M{"_id": site.Id},
bson.M{"$set": bson.M{
"sitedns": site.SiteDns,
"description": site.Description,
}})
return err
}
func (r *SiteRepository) Delete(id string) error {
err := r.C.Remove(bson.M{"_id": bson.ObjectIdHex(id)})
return err
}
func (r *SiteRepository) GetAll() []models.Site {
var sites []models.Site
iter := r.C.Find(nil).Iter()
result := models.Site{}
for iter.Next(&result) {
sites = append(sites, result)
}
return sites
}
func (r *SiteRepository) GetById(id string) (site models.Site, err error) {
err = r.C.FindId(bson.ObjectIdHex(id)).One(&site)
return
}
func (r *SiteRepository) GetByUser(user string) []models.Site {
var sites []models.Site
iter := r.C.Find(bson.M{"createdby": user}).Iter()
result := models.Site{}
for iter.Next(&result) {
sites = append(sites, result)
}
return sites
}