Files
hamster-tycoon/storage/dao/fake/database_fake_cages.go
2020-05-17 00:06:59 +02:00

67 lines
1.3 KiB
Go
Executable File

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
}