192 lines
9.8 KiB
Go
192 lines
9.8 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"browser.local/platform/domain"
|
|
)
|
|
|
|
type MetricSampleBody struct {
|
|
ID string `json:"id,omitempty"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
Online bool `json:"online"`
|
|
PlayerCount *int `json:"playerCount,omitempty"`
|
|
MaxPlayers *int `json:"maxPlayers,omitempty"`
|
|
TPS *float64 `json:"tps,omitempty"`
|
|
LatencyMS *float64 `json:"latencyMs,omitempty"`
|
|
CPUPercent *float64 `json:"cpuPercent,omitempty"`
|
|
MemoryPercent *float64 `json:"memoryPercent,omitempty"`
|
|
DiskPercent *float64 `json:"diskPercent,omitempty"`
|
|
Source string `json:"source"`
|
|
CollectedAt time.Time `json:"collectedAt"`
|
|
}
|
|
|
|
type MetricBatchIngestRequest struct {
|
|
RunEndpointID string `json:"runEndpointId"`
|
|
SessionToken string `json:"sessionToken"`
|
|
Samples []MetricSampleBody `json:"samples"`
|
|
}
|
|
|
|
type MetricBatchIngestResponse struct {
|
|
Accepted bool `json:"accepted"`
|
|
AcceptedCount int `json:"acceptedCount"`
|
|
LatestAt time.Time `json:"latestAt"`
|
|
ServerTime time.Time `json:"serverTime"`
|
|
}
|
|
|
|
type MetricSampleListResponse struct {
|
|
Items []MetricSampleBody `json:"items"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
type BackupCreateRequest struct {
|
|
ID string `json:"id,omitempty"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
ArtifactID string `json:"artifactId"`
|
|
Checksum string `json:"checksum,omitempty"`
|
|
SizeBytes int64 `json:"sizeBytes,omitempty"`
|
|
State domain.BackupState `json:"state,omitempty"`
|
|
RetentionUntil time.Time `json:"retentionUntil,omitempty"`
|
|
}
|
|
|
|
type BackupResponse struct {
|
|
ID string `json:"id"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
ArtifactID string `json:"artifactId"`
|
|
Checksum string `json:"checksum"`
|
|
SizeBytes int64 `json:"sizeBytes"`
|
|
State domain.BackupState `json:"state"`
|
|
RecoveryStatus string `json:"recoveryStatus,omitempty"`
|
|
RetentionUntil time.Time `json:"retentionUntil,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
type BackupListResponse struct {
|
|
Items []BackupResponse `json:"items"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
type RemoteAdapterDeclarationResponse struct {
|
|
Key string `json:"key"`
|
|
Kind domain.RemoteAdapterKind `json:"kind"`
|
|
TargetKeys []string `json:"targetKeys"`
|
|
Capabilities []string `json:"capabilities"`
|
|
TimeoutSeconds int `json:"timeoutSeconds"`
|
|
MaxAttempts int `json:"maxAttempts"`
|
|
}
|
|
|
|
type RemoteAdapterDeclarationListResponse struct {
|
|
Items []RemoteAdapterDeclarationResponse `json:"items"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
type RemoteAdapterRequestBody struct {
|
|
DeclarationKey string `json:"declarationKey"`
|
|
TargetKey string `json:"targetKey"`
|
|
Capability string `json:"capability"`
|
|
TimeoutSeconds int `json:"timeoutSeconds,omitempty"`
|
|
MaxAttempts int `json:"maxAttempts,omitempty"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
InputRef string `json:"inputRef,omitempty"`
|
|
Inputs map[string]string `json:"inputs,omitempty"`
|
|
}
|
|
|
|
type RemoteAdapterResponse struct {
|
|
RequestID string `json:"requestId"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
DeclarationKey string `json:"declarationKey"`
|
|
TargetKey string `json:"targetKey"`
|
|
Kind domain.RemoteAdapterKind `json:"kind"`
|
|
Status string `json:"status"`
|
|
Retryable bool `json:"retryable"`
|
|
Message string `json:"message"`
|
|
ResultRef string `json:"resultRef,omitempty"`
|
|
AuditEventID string `json:"auditEventId,omitempty"`
|
|
CompletedAt time.Time `json:"completedAt,omitempty"`
|
|
}
|
|
|
|
type SourceRCONCommandRequestBody struct {
|
|
Kind domain.SourceRCONCommandKind `json:"kind"`
|
|
ChatType int `json:"chatType,omitempty"`
|
|
Message string `json:"message,omitempty"`
|
|
TargetSteamID string `json:"targetSteamId,omitempty"`
|
|
Command string `json:"command,omitempty"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
}
|
|
|
|
type SourceRCONCommandResponse struct {
|
|
JobID string `json:"jobId"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
Status string `json:"status"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
func (request MetricBatchIngestRequest) ToDomain() domain.MetricBatchIngest {
|
|
samples := make([]domain.MetricSample, len(request.Samples))
|
|
for i, sample := range request.Samples {
|
|
samples[i] = metricSampleToDomain(sample)
|
|
}
|
|
return domain.MetricBatchIngest{RunEndpointID: request.RunEndpointID, SessionToken: request.SessionToken, Samples: samples}
|
|
}
|
|
|
|
func MetricBatchIngestFromDomain(result domain.MetricBatchIngestResult) MetricBatchIngestResponse {
|
|
return MetricBatchIngestResponse{Accepted: result.Accepted, AcceptedCount: result.AcceptedCount, LatestAt: result.LatestAt, ServerTime: result.ServerTime}
|
|
}
|
|
|
|
func MetricSampleListFromDomain(samples []domain.MetricSample) MetricSampleListResponse {
|
|
items := make([]MetricSampleBody, len(samples))
|
|
for i, sample := range samples {
|
|
items[i] = metricSampleFromDomain(sample)
|
|
}
|
|
return MetricSampleListResponse{Items: items, Count: len(items)}
|
|
}
|
|
|
|
func (request BackupCreateRequest) ToDomain() domain.BackupRecord {
|
|
return domain.BackupRecord{ID: request.ID, ServerInstanceID: request.ServerInstanceID, ArtifactID: request.ArtifactID, Checksum: request.Checksum, SizeBytes: request.SizeBytes, State: request.State, RetentionUntil: request.RetentionUntil}
|
|
}
|
|
|
|
func BackupFromDomain(record domain.BackupRecord) BackupResponse {
|
|
return BackupResponse{ID: record.ID, ServerInstanceID: record.ServerInstanceID, ArtifactID: record.ArtifactID, Checksum: record.Checksum, SizeBytes: record.SizeBytes, State: record.State, RecoveryStatus: record.RecoveryStatus, RetentionUntil: record.RetentionUntil, CreatedAt: record.CreatedAt, UpdatedAt: record.UpdatedAt}
|
|
}
|
|
|
|
func BackupListFromDomain(records []domain.BackupRecord) BackupListResponse {
|
|
items := make([]BackupResponse, len(records))
|
|
for i, record := range records {
|
|
items[i] = BackupFromDomain(record)
|
|
}
|
|
return BackupListResponse{Items: items, Count: len(items)}
|
|
}
|
|
|
|
func RemoteAdapterDeclarationsFromDomain(declarations []domain.RemoteAdapterDeclaration) RemoteAdapterDeclarationListResponse {
|
|
items := make([]RemoteAdapterDeclarationResponse, len(declarations))
|
|
for i, declaration := range declarations {
|
|
items[i] = RemoteAdapterDeclarationResponse{Key: declaration.Key, Kind: declaration.Kind, TargetKeys: domain.CopyStringSlice(declaration.TargetKeys), Capabilities: domain.CopyStringSlice(declaration.Capabilities), TimeoutSeconds: declaration.TimeoutSeconds, MaxAttempts: declaration.MaxAttempts}
|
|
}
|
|
return RemoteAdapterDeclarationListResponse{Items: items, Count: len(items)}
|
|
}
|
|
|
|
func (request RemoteAdapterRequestBody) ToDomain(serverInstanceID string) domain.RemoteAdapterRequest {
|
|
return domain.RemoteAdapterRequest{ServerInstanceID: serverInstanceID, DeclarationKey: request.DeclarationKey, TargetKey: request.TargetKey, Capability: request.Capability, TimeoutSeconds: request.TimeoutSeconds, MaxAttempts: request.MaxAttempts, IdempotencyKey: request.IdempotencyKey, InputRef: request.InputRef, Inputs: domain.CopyStringMap(request.Inputs)}
|
|
}
|
|
|
|
func RemoteAdapterFromDomain(result domain.RemoteAdapterResult) RemoteAdapterResponse {
|
|
return RemoteAdapterResponse{RequestID: result.RequestID, ServerInstanceID: result.ServerInstanceID, DeclarationKey: result.DeclarationKey, TargetKey: result.TargetKey, Kind: result.Kind, Status: result.Status, Retryable: result.Retryable, Message: result.Message, ResultRef: result.ResultRef, AuditEventID: result.AuditEventID, CompletedAt: result.CompletedAt}
|
|
}
|
|
|
|
func (request SourceRCONCommandRequestBody) ToDomain(serverInstanceID string) domain.SourceRCONCommandRequest {
|
|
return domain.SourceRCONCommandRequest{ServerInstanceID: serverInstanceID, Kind: request.Kind, ChatType: request.ChatType, Message: request.Message, TargetSteamID: request.TargetSteamID, Command: request.Command, IdempotencyKey: request.IdempotencyKey}
|
|
}
|
|
|
|
func SourceRCONCommandFromDomain(dispatch domain.SourceRCONCommandDispatch) SourceRCONCommandResponse {
|
|
return SourceRCONCommandResponse{JobID: dispatch.JobID, ServerInstanceID: dispatch.ServerInstanceID, Status: dispatch.Status, Message: dispatch.Message}
|
|
}
|
|
|
|
func metricSampleToDomain(sample MetricSampleBody) domain.MetricSample {
|
|
return domain.MetricSample{ID: sample.ID, ServerInstanceID: sample.ServerInstanceID, Online: sample.Online, PlayerCount: sample.PlayerCount, MaxPlayers: sample.MaxPlayers, TPS: sample.TPS, LatencyMS: sample.LatencyMS, CPUPercent: sample.CPUPercent, MemoryPercent: sample.MemoryPercent, DiskPercent: sample.DiskPercent, Source: sample.Source, CollectedAt: sample.CollectedAt}
|
|
}
|
|
|
|
func metricSampleFromDomain(sample domain.MetricSample) MetricSampleBody {
|
|
return MetricSampleBody{ID: sample.ID, ServerInstanceID: sample.ServerInstanceID, Online: sample.Online, PlayerCount: sample.PlayerCount, MaxPlayers: sample.MaxPlayers, TPS: sample.TPS, LatencyMS: sample.LatencyMS, CPUPercent: sample.CPUPercent, MemoryPercent: sample.MemoryPercent, DiskPercent: sample.DiskPercent, Source: sample.Source, CollectedAt: sample.CollectedAt}
|
|
}
|