feat: add get a game service and fake database
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user