59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
|
|
package mappers
|
||
|
|
|
||
|
|
import (
|
||
|
|
"apskel-pos-be/internal/entities"
|
||
|
|
"apskel-pos-be/internal/models"
|
||
|
|
)
|
||
|
|
|
||
|
|
// ToGameResponse converts a game entity to a game response
|
||
|
|
func ToGameResponse(game *entities.Game) *models.GameResponse {
|
||
|
|
if game == nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
return &models.GameResponse{
|
||
|
|
ID: game.ID,
|
||
|
|
Name: game.Name,
|
||
|
|
Type: string(game.Type),
|
||
|
|
IsActive: game.IsActive,
|
||
|
|
Metadata: game.Metadata,
|
||
|
|
CreatedAt: game.CreatedAt,
|
||
|
|
UpdatedAt: game.UpdatedAt,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// ToGameResponses converts a slice of game entities to game responses
|
||
|
|
func ToGameResponses(games []entities.Game) []models.GameResponse {
|
||
|
|
responses := make([]models.GameResponse, len(games))
|
||
|
|
for i, game := range games {
|
||
|
|
responses[i] = *ToGameResponse(&game)
|
||
|
|
}
|
||
|
|
return responses
|
||
|
|
}
|
||
|
|
|
||
|
|
// ToGameEntity converts a create game request to a game entity
|
||
|
|
func ToGameEntity(req *models.CreateGameRequest) *entities.Game {
|
||
|
|
return &entities.Game{
|
||
|
|
Name: req.Name,
|
||
|
|
Type: entities.GameType(req.Type),
|
||
|
|
IsActive: req.IsActive,
|
||
|
|
Metadata: req.Metadata,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// UpdateGameEntity updates a game entity with update request data
|
||
|
|
func UpdateGameEntity(game *entities.Game, req *models.UpdateGameRequest) {
|
||
|
|
if req.Name != nil {
|
||
|
|
game.Name = *req.Name
|
||
|
|
}
|
||
|
|
if req.Type != nil {
|
||
|
|
game.Type = entities.GameType(*req.Type)
|
||
|
|
}
|
||
|
|
if req.IsActive != nil {
|
||
|
|
game.IsActive = *req.IsActive
|
||
|
|
}
|
||
|
|
if req.Metadata != nil {
|
||
|
|
game.Metadata = req.Metadata
|
||
|
|
}
|
||
|
|
}
|