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 }