1
0
mirror of https://github.com/MADTeacher/go_basics.git synced 2025-11-23 21:34:47 +02:00
Files
go_basics/part_8/tic_tac_toe_v7/database/crud.go
Stanislav Chernyshev d4e7211d1d Глава 8
Допричесать игру
2025-06-22 21:04:23 +03:00

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()
}