feat: add get a game service and fake database

This commit is contained in:
Jeffrey Duroyon
2020-05-11 01:00:02 +02:00
parent 3ab5c7916f
commit 8d40337a1c
4 changed files with 117 additions and 11 deletions

View File

@@ -1,16 +1,59 @@
package fake
import "hamster-tycoon/storage/model"
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 nil, nil
return db.loadGames(), nil
}
func (db *DatabaseFake) GetGameById(string) (*model.Game, error) {
return nil, 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(*model.Game) error {
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
}