add cages and hamsters dao

This commit is contained in:
Jeffrey Duroyon
2020-05-17 00:06:59 +02:00
parent f6195e0638
commit 9e171382f0
5 changed files with 354 additions and 0 deletions

View File

@@ -1 +1,66 @@
package fake
import (
"encoding/json"
"errors"
uuid "github.com/satori/go.uuid"
"hamster-tycoon/storage/dao"
"hamster-tycoon/storage/model"
"hamster-tycoon/utils"
)
const (
cacheKeyCages = "cages"
)
func (db *DatabaseFake) saveCages(cages []*model.Cage) {
data := make([]interface{}, 0)
for _, v := range cages {
data = append(data, v)
}
db.save(cacheKeyCages, data)
}
func (db *DatabaseFake) loadCages() []*model.Cage {
cages := make([]*model.Cage, 0)
b, err := db.Cache.Get(cacheKeyCages)
if err != nil {
return cages
}
err = json.Unmarshal(b, &cages)
if err != nil {
utils.GetLogger().WithError(err).Error("Error while unmarshal fake users")
}
return cages
}
func (db *DatabaseFake) GetAllCages() ([]*model.Cage, error) {
return db.loadCages(), nil
}
func (db *DatabaseFake) GetCageById(cageId string) (*model.Cage, error) {
cages := db.loadCages()
for _, g := range cages {
if g.ID == cageId {
return g, nil
}
}
return nil, dao.NewDAOError(dao.ErrTypeNotFound, errors.New("cage not found"))
}
func (db *DatabaseFake) CreateCage(cage *model.Cage) error {
cage.ID = uuid.NewV4().String()
cages := db.loadCages()
cages = append(cages, cage)
db.saveCages(cages)
return nil
}
func (db *DatabaseFake) DeleteCage(string) error {
return nil
}
func (db *DatabaseFake) UpdateCage(*model.Cage) error {
return nil
}

View File

@@ -1 +1,66 @@
package fake
import (
"encoding/json"
"errors"
uuid "github.com/satori/go.uuid"
"hamster-tycoon/storage/dao"
"hamster-tycoon/storage/model"
"hamster-tycoon/utils"
)
const (
cacheKeyHamsters = "hamsters"
)
func (db *DatabaseFake) saveHamsters(hamsters []*model.Hamster) {
data := make([]interface{}, 0)
for _, v := range hamsters {
data = append(data, v)
}
db.save(cacheKeyHamsters, data)
}
func (db *DatabaseFake) loadHamsters() []*model.Hamster {
hamsters := make([]*model.Hamster, 0)
b, err := db.Cache.Get(cacheKeyHamsters)
if err != nil {
return hamsters
}
err = json.Unmarshal(b, &hamsters)
if err != nil {
utils.GetLogger().WithError(err).Error("Error while unmarshal fake users")
}
return hamsters
}
func (db *DatabaseFake) GetAllHamsters() ([]*model.Hamster, error) {
return db.loadHamsters(), nil
}
func (db *DatabaseFake) GetHamsterById(hamsterId string) (*model.Hamster, error) {
hamsters := db.loadHamsters()
for _, g := range hamsters {
if g.ID == hamsterId {
return g, nil
}
}
return nil, dao.NewDAOError(dao.ErrTypeNotFound, errors.New("hamster not found"))
}
func (db *DatabaseFake) CreateHamster(hamster *model.Hamster) error {
hamster.ID = uuid.NewV4().String()
hamsters := db.loadHamsters()
hamsters = append(hamsters, hamster)
db.saveHamsters(hamsters)
return nil
}
func (db *DatabaseFake) DeleteHamster(string) error {
return nil
}
func (db *DatabaseFake) UpdateHamster(*model.Hamster) error {
return nil
}