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(gameID, cageID string) ([]*model.Hamster, error) { hamsters := db.loadHamsters() var hamsterFound []*model.Hamster for _, g := range hamsters { if g.Cage.ID == cageID && g.Cage.Game.ID == gameID { hamsterFound = append(hamsterFound, g) } } return hamsterFound, nil } func (db *DatabaseFake) GetHamsterByID(hamsterID, gameID, cageID string) (*model.Hamster, error) { hamsters := db.loadHamsters() for _, g := range hamsters { if g.ID == hamsterID && g.Cage.ID == cageID && g.Cage.Game.ID == gameID { 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 }