Files
kontor/go/pkg/comics/artist_dao.go
T
2025-01-09 19:28:50 +01:00

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
}