53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"log"
|
|
|
|
"github.com/didiercrunch/doormanserver/inmemoryconnector"
|
|
"github.com/didiercrunch/doormanserver/mongoconnector"
|
|
"github.com/didiercrunch/doormanserver/shared"
|
|
"github.com/didiercrunch/doormanserver/doormen"
|
|
"gopkg.in/mgo.v2/bson"
|
|
)
|
|
|
|
type DBConnector interface {
|
|
Save(wab *doormen.DoormanDefinition) error
|
|
Update(wab *doormen.DoormanDefinition) error
|
|
Exists(wab *doormen.DoormanDefinition) bool
|
|
ExistsId(id bson.ObjectId) bool
|
|
GetAllDoormen() <-chan *doormen.DoormanId
|
|
GetDoorman(id bson.ObjectId) (*doormen.DoormanDefinition, error)
|
|
DeleteDoorman(id bson.ObjectId) error
|
|
}
|
|
|
|
var conn DBConnector
|
|
|
|
func initMongoDbConnector() {
|
|
var err error
|
|
if conn, err = mongoconnector.NewMongoDBConnector(); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
if params := shared.GetParams(); params.UseMongoDb() {
|
|
initMongoDbConnector()
|
|
log.Println("using mongodb as database")
|
|
} else {
|
|
conn = inmemoryconnector.NewInMemoryDBConnector()
|
|
log.Println("using inmemory as database")
|
|
}
|
|
}
|
|
|
|
func CreateDoormanInDatabase(wab *doormen.DoormanDefinition) error {
|
|
if conn.Exists(wab) {
|
|
return errors.New("doormen already exists")
|
|
}
|
|
return conn.Save(wab)
|
|
}
|
|
|
|
func UpdateDoormanInDatabase(wab *doormen.DoormanDefinition) error {
|
|
return conn.Update(wab)
|
|
}
|