67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
package tysc
|
|
|
|
import (
|
|
"gitlab.thpeetz.de/kontor/kontor-go/pkg/dao"
|
|
|
|
mgo "gopkg.in/mgo.v2"
|
|
"gopkg.in/mgo.v2/bson"
|
|
)
|
|
|
|
// CardDAO extends the type BaseDAO.
|
|
type CardDAO struct {
|
|
Db dao.BaseDAO
|
|
}
|
|
|
|
const (
|
|
// CARDCOLLECTION defines the collection name for storing cards.
|
|
CARDCOLLECTION = "card"
|
|
// CARDMODEL defines the name of the card data model.
|
|
CARDMODEL = "kontor.tysc.card"
|
|
)
|
|
|
|
// FindAll retrieves the list of cards from the database.
|
|
func (m *CardDAO) FindAll() ([]Card, error) {
|
|
m.Db.Connect()
|
|
var cards []Card
|
|
err := m.Db.MongoDb.C(CARDCOLLECTION).Find(bson.M{"model": CARDMODEL}).All(&cards)
|
|
return cards, err
|
|
}
|
|
|
|
// FindByID returns an card with given id or returns the error.
|
|
func (m *CardDAO) FindByID(id string) (Card, error) {
|
|
m.Db.Connect()
|
|
var card Card
|
|
err := m.Db.MongoDb.C(CARDCOLLECTION).FindId(bson.ObjectIdHex(id)).One(&card)
|
|
return card, err
|
|
}
|
|
|
|
// Insert a card into database.
|
|
func (m *CardDAO) Insert(card Card) error {
|
|
m.Db.Connect()
|
|
card.Model = CARDMODEL
|
|
err := m.Db.MongoDb.C(CARDCOLLECTION).Insert(&card)
|
|
return err
|
|
}
|
|
|
|
// Upsert a card into database.
|
|
func (m *CardDAO) Upsert(card Card) (*mgo.ChangeInfo, error) {
|
|
m.Db.Connect()
|
|
card.Model = CARDMODEL
|
|
info, err := m.Db.MongoDb.C(CARDCOLLECTION).Upsert(bson.M{"number": card.Number}, &card)
|
|
return info, err
|
|
}
|
|
|
|
// Update an existing card.
|
|
func (m *CardDAO) Update(card Card) error {
|
|
m.Db.Connect()
|
|
err := m.Db.MongoDb.C(CARDCOLLECTION).UpdateId(card.ID, &card)
|
|
return err
|
|
}
|
|
|
|
// Delete an existing card.
|
|
func (m *CardDAO) Delete(card Card) error {
|
|
m.Db.Connect()
|
|
err := m.Db.MongoDb.C(CARDCOLLECTION).Remove(&card)
|
|
return err
|
|
}
|