74 lines
1.5 KiB
Go
Executable File
74 lines
1.5 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(gameID string) ([]*model.Cage, error) {
|
|
cages := db.loadCages()
|
|
var cagesLoaded []*model.Cage
|
|
for _, g := range cages {
|
|
if g.Game.ID == gameID {
|
|
cagesLoaded = append(cagesLoaded, g)
|
|
}
|
|
}
|
|
return cagesLoaded, nil
|
|
}
|
|
|
|
func (db *DatabaseFake) GetCageByID(gameID, cageID string) (*model.Cage, error) {
|
|
cages := db.loadCages()
|
|
for _, g := range cages {
|
|
if g.Game.ID == gameID && 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
|
|
}
|