first commit
way too late.
This commit is contained in:
commit
d4f7dc57fc
53 files changed
+3518
No files matched your search
@@ -0,0 +1,71 @@
|
||||
package mongoconnector
|
||||
|
||||
import (
|
||||
"github.com/didiercrunch/doormanserver/shared"
|
||||
"github.com/didiercrunch/doormanserver/doormen"
|
||||
mgo "gopkg.in/mgo.v2"
|
||||
"gopkg.in/mgo.v2/bson"
|
||||
)
|
||||
|
||||
type MongoDBConnector struct {
|
||||
Collection *mgo.Collection
|
||||
}
|
||||
|
||||
func NewMongoDBConnector() (*MongoDBConnector, error) {
|
||||
if err := initMongo(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
c := new(MongoDBConnector)
|
||||
params := shared.GetParams()
|
||||
c.Collection = DB.C(params.Mongo.DoormanDefinitionCollection)
|
||||
err := c.Collection.EnsureIndex(mgo.Index{Key: []string{"name"}, Unique: true})
|
||||
return c, err
|
||||
}
|
||||
|
||||
func (c *MongoDBConnector) Exists(wab *doormen.DoormanDefinition) bool {
|
||||
err := c.Collection.Find(bson.M{"name": wab.Name}).One(&struct{}{})
|
||||
return err != mgo.ErrNotFound
|
||||
}
|
||||
|
||||
func (c *MongoDBConnector) ExistsId(id bson.ObjectId) bool {
|
||||
err := c.Collection.FindId(id).One(&struct{}{})
|
||||
return err != mgo.ErrNotFound
|
||||
}
|
||||
|
||||
func (c *MongoDBConnector) Save(wab *doormen.DoormanDefinition) error {
|
||||
return c.Collection.Insert(wab)
|
||||
}
|
||||
|
||||
func (c *MongoDBConnector) GetAllDoormen() <-chan *doormen.DoormanId {
|
||||
ch := make(chan *doormen.DoormanId)
|
||||
go func() {
|
||||
iter := c.Collection.Find(nil).Iter()
|
||||
|
||||
for res := new(doormen.DoormanId); iter.Next(res); res = new(doormen.DoormanId) {
|
||||
ch <- res
|
||||
}
|
||||
if err := iter.Err(); err != nil {
|
||||
ch <- &doormen.DoormanId{Id: "", Name: err.Error()}
|
||||
}
|
||||
close(ch)
|
||||
}()
|
||||
return ch
|
||||
}
|
||||
|
||||
func (c *MongoDBConnector) GetDoorman(id bson.ObjectId) (*doormen.DoormanDefinition, error) {
|
||||
doorman := new(doormen.DoormanDefinition)
|
||||
if err := c.Collection.FindId(id).One(doorman); err == mgo.ErrNotFound {
|
||||
return nil, nil
|
||||
} else {
|
||||
return doorman, err
|
||||
}
|
||||
}
|
||||
|
||||
func (c *MongoDBConnector) DeleteDoorman(id bson.ObjectId) error {
|
||||
return c.Collection.RemoveId(id)
|
||||
}
|
||||
|
||||
func (c *MongoDBConnector) Update(wab *doormen.DoormanDefinition) error {
|
||||
return c.Collection.Update(&bson.M{"_id": wab.Id}, &bson.M{"$set": wab})
|
||||
}
|
||||
Reference in new issue
Block a user