92 lines
5.4 KiB
Go
92 lines
5.4 KiB
Go
package dto
|
|
|
|
import (
|
|
"browser.local/platform/domain"
|
|
"time"
|
|
)
|
|
|
|
type GamePlayerStateFieldResponse struct {
|
|
Key string `json:"key"`
|
|
Label string `json:"label"`
|
|
Kind string `json:"kind"`
|
|
Minimum float64 `json:"minimum"`
|
|
Maximum float64 `json:"maximum"`
|
|
Value float64 `json:"value"`
|
|
}
|
|
type GamePlayerStateResponse struct {
|
|
GameVersion string `json:"gameVersion"`
|
|
StateVersion string `json:"stateVersion"`
|
|
SafetyWindow string `json:"safetyWindow,omitempty"`
|
|
MaintenanceVerified bool `json:"maintenanceVerified"`
|
|
PlayerOnline bool `json:"playerOnline"`
|
|
Supported bool `json:"supported"`
|
|
Fields []GamePlayerStateFieldResponse `json:"fields"`
|
|
ObservedAt time.Time `json:"observedAt"`
|
|
}
|
|
type GamePlayerStatePatchChangeRequest struct {
|
|
FieldKey string `json:"fieldKey"`
|
|
Before float64 `json:"before"`
|
|
After float64 `json:"after"`
|
|
}
|
|
type GamePlayerStatePatchRequest struct {
|
|
GameVersion string `json:"gameVersion"`
|
|
ExpectedStateVersion string `json:"expectedStateVersion"`
|
|
SafetyWindow string `json:"safetyWindow"`
|
|
Changes []GamePlayerStatePatchChangeRequest `json:"changes"`
|
|
Reason string `json:"reason"`
|
|
}
|
|
type GamePlayerStatePatchChangeResponse struct {
|
|
FieldKey string `json:"fieldKey"`
|
|
Before float64 `json:"before"`
|
|
After float64 `json:"after"`
|
|
}
|
|
type GamePlayerStatePatchResponse struct {
|
|
ID string `json:"id"`
|
|
GameVersion string `json:"gameVersion"`
|
|
ExpectedStateVersion string `json:"expectedStateVersion"`
|
|
Changes []GamePlayerStatePatchChangeResponse `json:"changes"`
|
|
Reason string `json:"reason"`
|
|
RequesterID string `json:"requesterId"`
|
|
ApproverID string `json:"approverId,omitempty"`
|
|
Status string `json:"status"`
|
|
BridgeCommandID string `json:"bridgeCommandId,omitempty"`
|
|
ExecutionSummary string `json:"executionSummary,omitempty"`
|
|
ConfirmedStateVersion string `json:"confirmedStateVersion,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
ApprovedAt time.Time `json:"approvedAt,omitempty"`
|
|
CompletedAt time.Time `json:"completedAt,omitempty"`
|
|
}
|
|
type GamePlayerStatePatchListResponse struct {
|
|
Items []GamePlayerStatePatchResponse `json:"items"`
|
|
}
|
|
|
|
func (request GamePlayerStatePatchRequest) ToDomain() domain.GamePlayerStatePatchRequest {
|
|
changes := make([]domain.GamePlayerStatePatchChange, len(request.Changes))
|
|
for i, change := range request.Changes {
|
|
changes[i] = domain.GamePlayerStatePatchChange{FieldKey: change.FieldKey, Before: change.Before, After: change.After}
|
|
}
|
|
return domain.GamePlayerStatePatchRequest{GameVersion: request.GameVersion, ExpectedStateVersion: request.ExpectedStateVersion, SafetyWindow: request.SafetyWindow, Changes: changes, Reason: request.Reason}
|
|
}
|
|
func GamePlayerStateFromDomain(value domain.GamePlayerStateSnapshot) GamePlayerStateResponse {
|
|
catalog, supported := domain.SCUMPlayerStateCatalogForVersion(value.GameVersion)
|
|
fields := make([]GamePlayerStateFieldResponse, 0, len(catalog.Fields))
|
|
for _, field := range catalog.Fields {
|
|
fields = append(fields, GamePlayerStateFieldResponse{Key: field.Key, Label: field.Label, Kind: string(field.Kind), Minimum: field.Minimum, Maximum: field.Maximum, Value: value.Fields[field.Key]})
|
|
}
|
|
return GamePlayerStateResponse{GameVersion: value.GameVersion, StateVersion: value.StateVersion, SafetyWindow: value.SafetyWindow, MaintenanceVerified: value.MaintenanceVerified, PlayerOnline: value.PlayerOnline, Supported: supported, Fields: fields, ObservedAt: value.ObservedAt}
|
|
}
|
|
func GamePlayerStatePatchFromDomain(value domain.GamePlayerStatePatch) GamePlayerStatePatchResponse {
|
|
changes := make([]GamePlayerStatePatchChangeResponse, len(value.Changes))
|
|
for i, change := range value.Changes {
|
|
changes[i] = GamePlayerStatePatchChangeResponse{FieldKey: change.FieldKey, Before: change.Before, After: change.After}
|
|
}
|
|
return GamePlayerStatePatchResponse{ID: value.ID, GameVersion: value.GameVersion, ExpectedStateVersion: value.ExpectedStateVersion, Changes: changes, Reason: value.Reason, RequesterID: value.RequesterID, ApproverID: value.ApproverID, Status: string(value.Status), BridgeCommandID: value.BridgeCommandID, ExecutionSummary: value.ExecutionSummary, ConfirmedStateVersion: value.ConfirmedStateVersion, CreatedAt: value.CreatedAt, ApprovedAt: value.ApprovedAt, CompletedAt: value.CompletedAt}
|
|
}
|
|
func GamePlayerStatePatchesFromDomain(values []domain.GamePlayerStatePatch) GamePlayerStatePatchListResponse {
|
|
items := make([]GamePlayerStatePatchResponse, len(values))
|
|
for i, value := range values {
|
|
items[i] = GamePlayerStatePatchFromDomain(value)
|
|
}
|
|
return GamePlayerStatePatchListResponse{Items: items}
|
|
}
|