Import sources from Kontor

This commit is contained in:
Thomas Peetz
2019-06-18 18:33:38 +02:00
parent fa3286c8e2
commit f326e994da
20 changed files with 1262 additions and 3 deletions
+78
View File
@@ -0,0 +1,78 @@
package auth
import (
"gitlab.ingenieurbuero-peetz.de/tpeetz/kalorienmanager.git/pkg/dao"
mgo "gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
// SessionDAO extends the type BaseDAO.
type SessionDAO struct {
Db dao.BaseDAO
}
const (
// SESSIONCOLLECTION defines the collection name for storing session data.
SESSIONCOLLECTION = "session"
// SESSIONMODEL defines the name of the session data model.
SESSIONMODEL = "kalorienmanager.admin.session"
)
// FindAll retrieves the list of sessions from the database.
func (m *SessionDAO) FindAll() ([]Session, error) {
m.Db.Connect()
var sessions []Session
err := m.Db.MongoDb.C(SESSIONCOLLECTION).Find(bson.M{"model": SESSIONMODEL}).All(&sessions)
return sessions, err
}
// FindByID returns a session with given id or returns the error.
func (m *SessionDAO) FindByID(id string) (Session, error) {
m.Db.Connect()
var session Session
err := m.Db.MongoDb.C(SESSIONCOLLECTION).FindId(bson.ObjectIdHex(id)).One(&session)
return session, err
}
// Insert a session into database.
func (m *SessionDAO) Insert(session Session) error {
m.Db.Connect()
session.Model = SESSIONMODEL
err := m.Db.MongoDb.C(SESSIONCOLLECTION).Insert(&session)
//log.PrintDebug("Insert: %v, %v\n", session, err)
return err
}
// Upsert a session into database.
func (m *SessionDAO) Upsert(session Session) (*mgo.ChangeInfo, error) {
m.Db.Connect()
session.Model = SESSIONMODEL
info, err := m.Db.MongoDb.C(SESSIONCOLLECTION).Upsert(bson.M{"_id": session.ID}, &session)
return info, err
}
// Update an existing session.
func (m *SessionDAO) Update(session Session) error {
m.Db.Connect()
err := m.Db.MongoDb.C(SESSIONCOLLECTION).UpdateId(session.ID, &session)
return err
}
// Delete an existing session.
func (m *SessionDAO) Delete(session Session) error {
m.Db.Connect()
err := m.Db.MongoDb.C(SESSIONCOLLECTION).Remove(&session)
return err
}
// GetSession get a session by given id or create a new one, if nothing was found.
func (m *SessionDAO) GetSession(id string) (*Session, error) {
m.Db.Connect()
session, err := m.FindByID(id)
if err != nil {
session = Session{ID: bson.ObjectIdHex(id), Username: "", IsAdmin: false}
m.Insert(session)
}
return &session, nil
}