67 lines
1.4 KiB
Go
Executable File
67 lines
1.4 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 (
|
|
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
|
|
}
|