mirror of
https://github.com/MADTeacher/go_basics.git
synced 2025-11-23 21:34:47 +02:00
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package database
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
m "tic-tac-toe/model"
|
|
)
|
|
|
|
func (r *SQLiteRepository) SaveFinishedGame(
|
|
snapshot *m.FinishGameSnapshot) error {
|
|
boardJSON, err := json.Marshal(snapshot.Board)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return r.db.Create(&PlayerFinishGame{
|
|
BoardJSON: boardJSON,
|
|
PlayerFigure: int(snapshot.PlayerFigure),
|
|
WinnerName: snapshot.WinnerName,
|
|
AnotherPlayerName: snapshot.AnotherPlayerName,
|
|
Time: snapshot.Time,
|
|
}).Error
|
|
}
|
|
|
|
func (r *SQLiteRepository) GetAllFinishedGames() (*[]m.FinishGameSnapshot, error) {
|
|
var playerFinishGames []PlayerFinishGame
|
|
if err := r.db.Find(&playerFinishGames).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
var finishGameSnapshots []m.FinishGameSnapshot
|
|
for _, playerFinishGame := range playerFinishGames {
|
|
temp, err := playerFinishGame.ToModel()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
finishGameSnapshots = append(finishGameSnapshots, *temp)
|
|
}
|
|
return &finishGameSnapshots, nil
|
|
}
|
|
|
|
func (r *SQLiteRepository) GetFinishedGameById(
|
|
id int,
|
|
) (*m.FinishGameSnapshot, error) {
|
|
var playerFinishGame PlayerFinishGame
|
|
if err := r.db.Where("id = ?", id).First(
|
|
&playerFinishGame,
|
|
).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return playerFinishGame.ToModel()
|
|
}
|