1
0
mirror of https://github.com/MADTeacher/go_basics.git synced 2025-11-23 21:34:47 +02:00
Files
go_basics/part_6/tic_tac_toe_v5/database/utils.go

60 lines
1.5 KiB
Go
Raw Normal View History

2025-06-17 15:48:17 +03:00
package database
import (
"encoding/json"
b "tic-tac-toe/board"
m "tic-tac-toe/model"
p "tic-tac-toe/player"
)
2025-06-18 00:49:37 +03:00
// Задаем имя таблицы для структуры Player
2025-06-17 15:48:17 +03:00
func (p *Player) TableName() string {
return "players"
}
2025-06-18 00:49:37 +03:00
// Задаем имя таблицы для структуры PlayerFinishGame
2025-06-17 15:48:17 +03:00
func (pfg *PlayerFinishGame) TableName() string {
return "player_finish_games"
}
2025-06-18 00:49:37 +03:00
// Преобразуем таблицу PlayerFinishGame в модель PlayerFinishGame
// из пакета model
2025-06-17 15:48:17 +03:00
func (f *PlayerFinishGame) ToModel() (*m.FinishGameSnapshot, error) {
var board b.Board
if err := json.Unmarshal(f.BoardJSON, &board); err != nil {
return nil, err
}
return &m.FinishGameSnapshot{
Board: &board,
PlayerFigure: b.BoardField(f.PlayerFigure),
WinnerName: f.WinnerName,
PlayerNickName: f.PlayerNickName,
Time: f.Time,
}, nil
}
2025-06-18 00:49:37 +03:00
// Задаем имя таблицы для структуры GameSnapshot
2025-06-17 15:48:17 +03:00
func (g *GameSnapshot) TableName() string {
return "game_snapshots"
}
2025-06-18 00:49:37 +03:00
// Преобразуем таблицу GameSnapshot в модель GameSnapshot
// из пакета model
2025-06-17 15:48:17 +03:00
func (gs *GameSnapshot) ToModel() (*m.GameSnapshot, error) {
var board b.Board
if err := json.Unmarshal(gs.BoardJSON, &board); err != nil {
return nil, err
}
return &m.GameSnapshot{
2025-06-21 13:28:09 +03:00
Board: &board,
PlayerFigure: b.BoardField(gs.PlayerFigure),
State: gs.State,
Mode: gs.Mode,
Difficulty: p.Difficulty(gs.Difficulty),
SnapshotName: gs.SnapshotName,
2025-06-17 15:48:17 +03:00
}, nil
}