79 lines
2.1 KiB
Go
79 lines
2.1 KiB
Go
package comics
|
|
|
|
import (
|
|
"gitlab.thpeetz.de/kontor/kontor-go/pkg/dao"
|
|
"log"
|
|
|
|
mgo "gopkg.in/mgo.v2"
|
|
"gopkg.in/mgo.v2/bson"
|
|
)
|
|
|
|
// ArtistDAO extends the type BaseDAO.
|
|
type ArtistDAO struct {
|
|
Db dao.BaseDAO
|
|
}
|
|
|
|
const (
|
|
// ARTISTCOLLECTION defines the collection name for storing comic artists.
|
|
ARTISTCOLLECTION = "artist"
|
|
// ARTISTMODEL defines the name of the artist data model.
|
|
ARTISTMODEL = "kontor.comics.artist"
|
|
)
|
|
|
|
// FindAll retrieves the list of artists from the database.
|
|
func (m *ArtistDAO) FindAll() ([]Artist, error) {
|
|
m.Db.Connect()
|
|
var artists []Artist
|
|
err := m.Db.MongoDb.C(ARTISTCOLLECTION).Find(bson.M{"model": ARTISTMODEL}).All(&artists)
|
|
return artists, err
|
|
}
|
|
|
|
// FindByID returns an artists with given id or returns the error.
|
|
func (m *ArtistDAO) FindByID(id string) (Artist, error) {
|
|
m.Db.Connect()
|
|
var artist Artist
|
|
err := m.Db.MongoDb.C(ARTISTCOLLECTION).FindId(bson.ObjectIdHex(id)).One(&artist)
|
|
return artist, err
|
|
}
|
|
|
|
// FindByName returns an artists with given name or returns the error.
|
|
func (m *ArtistDAO) FindByName(name string) (Artist, error) {
|
|
m.Db.Connect()
|
|
var artist Artist
|
|
err := m.Db.MongoDb.C(ARTISTCOLLECTION).Find(bson.M{"name": name, "model": ARTISTMODEL}).One(&artist)
|
|
return artist, err
|
|
}
|
|
|
|
// Insert an artist into database.
|
|
func (m *ArtistDAO) Insert(artist Artist) error {
|
|
m.Db.Connect()
|
|
artist.Model = ARTISTMODEL
|
|
err := m.Db.MongoDb.C(ARTISTCOLLECTION).Insert(&artist)
|
|
return err
|
|
}
|
|
|
|
// Upsert an artist into database.
|
|
func (m *ArtistDAO) Upsert(artist Artist) (*mgo.ChangeInfo, error) {
|
|
m.Db.Connect()
|
|
artist.Model = ARTISTMODEL
|
|
info, err := m.Db.MongoDb.C(ARTISTCOLLECTION).Upsert(bson.M{"name": artist.Name}, &artist)
|
|
return info, err
|
|
}
|
|
|
|
// Delete an existing artist.
|
|
func (m *ArtistDAO) Delete(artist Artist) error {
|
|
m.Db.Connect()
|
|
err := m.Db.MongoDb.C(ARTISTCOLLECTION).Remove(&artist)
|
|
if err != nil {
|
|
log.Printf("ArtistDao.Delete: %v", err)
|
|
}
|
|
return err
|
|
}
|
|
|
|
// Update an existing artist.
|
|
func (m *ArtistDAO) Update(artist Artist) error {
|
|
m.Db.Connect()
|
|
err := m.Db.MongoDb.C(ARTISTCOLLECTION).UpdateId(artist.ID, &artist)
|
|
return err
|
|
}
|