package fake import ( "encoding/json" "errors" uuid "github.com/satori/go.uuid" "hamster-tycoon/storage/dao" "hamster-tycoon/storage/model" "hamster-tycoon/utils" ) const ( cacheKeyGames = "games" ) func (db *DatabaseFake) saveGames(games []*model.Game) { data := make([]interface{}, 0) for _, v := range games { data = append(data, v) } db.save(cacheKeyGames, data) } func (db *DatabaseFake) loadGames() []*model.Game { games := make([]*model.Game, 0) b, err := db.Cache.Get(cacheKeyGames) if err != nil { return games } err = json.Unmarshal(b, &games) if err != nil { utils.GetLogger().WithError(err).Error("Error while unmarshal fake users") } return games } func (db *DatabaseFake) GetAllGames() ([]*model.Game, error) { return db.loadGames(), nil } func (db *DatabaseFake) GetGameById(gameId string) (*model.Game, error) { games := db.loadGames() for _, g := range games { if g.ID == gameId { return g, nil } } return nil, dao.NewDAOError(dao.ErrTypeNotFound, errors.New("game not found")) } func (db *DatabaseFake) CreateGame(game *model.Game) error { game.ID = uuid.NewV4().String() games := db.loadGames() games = append(games, game) db.saveGames(games) return nil } func (db *DatabaseFake) DeleteGame(string) error { return nil } func (db *DatabaseFake) UpdateGame(*model.Game) error { return nil }