244 lines
15 KiB
Go
244 lines
15 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"browser.local/platform/domain"
|
|
)
|
|
|
|
type SCUMSafeSummaryBody struct {
|
|
Title string `json:"title,omitempty"`
|
|
Message string `json:"message,omitempty"`
|
|
Details map[string]string `json:"details,omitempty"`
|
|
}
|
|
|
|
type SCUMDataObservationResponse struct {
|
|
ID string `json:"id"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
PluginID string `json:"pluginId"`
|
|
Source string `json:"source"`
|
|
QueryKey string `json:"queryKey,omitempty"`
|
|
SubjectType string `json:"subjectType,omitempty"`
|
|
SubjectID string `json:"subjectId,omitempty"`
|
|
Sequence uint64 `json:"sequence"`
|
|
Checksum string `json:"checksum,omitempty"`
|
|
Status string `json:"status"`
|
|
ErrorCode string `json:"errorCode,omitempty"`
|
|
SafeSummary SCUMSafeSummaryBody `json:"safeSummary,omitempty"`
|
|
ObservedAt time.Time `json:"observedAt"`
|
|
ReceivedAt time.Time `json:"receivedAt"`
|
|
}
|
|
|
|
type SCUMProjectionFreshnessBody struct {
|
|
Status string `json:"status"`
|
|
ObservationID string `json:"observationId,omitempty"`
|
|
Source string `json:"source,omitempty"`
|
|
QueryKey string `json:"queryKey,omitempty"`
|
|
Sequence uint64 `json:"sequence,omitempty"`
|
|
Checksum string `json:"checksum,omitempty"`
|
|
StaleReason string `json:"staleReason,omitempty"`
|
|
ObservedAt time.Time `json:"observedAt,omitempty"`
|
|
ReceivedAt time.Time `json:"receivedAt,omitempty"`
|
|
}
|
|
|
|
type SCUMMutationGuardBody struct {
|
|
FieldKey string `json:"fieldKey,omitempty"`
|
|
Before any `json:"before,omitempty"`
|
|
After any `json:"after,omitempty"`
|
|
MaxRowsAffected int `json:"maxRowsAffected,omitempty"`
|
|
SafetyWindow string `json:"safetyWindow,omitempty"`
|
|
BackupRef string `json:"backupRef,omitempty"`
|
|
RequiresOfflinePlayer bool `json:"requiresOfflinePlayer,omitempty"`
|
|
RequiresMaintenance bool `json:"requiresMaintenance,omitempty"`
|
|
RequiresBackup bool `json:"requiresBackup,omitempty"`
|
|
}
|
|
|
|
type SCUMOperationConfirmationBody struct {
|
|
Status string `json:"status,omitempty"`
|
|
ObservationID string `json:"observationId,omitempty"`
|
|
ConfirmedFields map[string]any `json:"confirmedFields,omitempty"`
|
|
AffectedRows int `json:"affectedRows,omitempty"`
|
|
MutationChecksum string `json:"mutationChecksum,omitempty"`
|
|
Checksum string `json:"checksum,omitempty"`
|
|
ObservedAt time.Time `json:"observedAt,omitempty"`
|
|
SafeSummary SCUMSafeSummaryBody `json:"safeSummary,omitempty"`
|
|
}
|
|
|
|
type SCUMOperationRequestBody struct {
|
|
TemplateKey string `json:"templateKey"`
|
|
PlayerID string `json:"playerId,omitempty"`
|
|
Payload map[string]any `json:"payload,omitempty"`
|
|
Guard SCUMMutationGuardBody `json:"guard,omitempty"`
|
|
Reason string `json:"reason"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
}
|
|
|
|
type SCUMWorkflowCreateRequest struct {
|
|
TemplateKey string `json:"templateKey"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
Input map[string]any `json:"input,omitempty"`
|
|
}
|
|
|
|
type SCUMOperationResponse struct {
|
|
ID string `json:"id"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
PluginID string `json:"pluginId"`
|
|
TemplateKey string `json:"templateKey"`
|
|
PlayerID string `json:"playerId,omitempty"`
|
|
RequesterID string `json:"requesterId,omitempty"`
|
|
ApproverID string `json:"approverId,omitempty"`
|
|
ApprovalLevel string `json:"approvalLevel"`
|
|
Payload map[string]any `json:"payload,omitempty"`
|
|
Guard SCUMMutationGuardBody `json:"guard,omitempty"`
|
|
Confirmation SCUMOperationConfirmationBody `json:"confirmation,omitempty"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason,omitempty"`
|
|
RunJobID string `json:"runJobId,omitempty"`
|
|
SafeSummary SCUMSafeSummaryBody `json:"safeSummary,omitempty"`
|
|
AuditReferences []string `json:"auditReferences,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
ApprovedAt time.Time `json:"approvedAt,omitempty"`
|
|
CompletedAt time.Time `json:"completedAt,omitempty"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
type SCUMOperationListResponse struct {
|
|
Items []SCUMOperationResponse `json:"items"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
type SCUMWorkflowResponse struct {
|
|
ID string `json:"id"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
PluginID string `json:"pluginId"`
|
|
TemplateKey string `json:"templateKey"`
|
|
RequestedBy string `json:"requestedBy,omitempty"`
|
|
IdempotencyKey string `json:"idempotencyKey,omitempty"`
|
|
Status string `json:"status"`
|
|
CurrentStepKey string `json:"currentStepKey,omitempty"`
|
|
Input map[string]any `json:"input,omitempty"`
|
|
SafeSummary SCUMSafeSummaryBody `json:"safeSummary,omitempty"`
|
|
BlockerReason string `json:"blockerReason,omitempty"`
|
|
AuditReferences []string `json:"auditReferences,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
CompletedAt time.Time `json:"completedAt,omitempty"`
|
|
}
|
|
|
|
type SCUMWorkflowListResponse struct {
|
|
Items []SCUMWorkflowResponse `json:"items"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
type SCUMWorkflowStepResponse struct {
|
|
ID string `json:"id"`
|
|
WorkflowID string `json:"workflowId"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
StepKey string `json:"stepKey"`
|
|
DependsOn []string `json:"dependsOn,omitempty"`
|
|
Status string `json:"status"`
|
|
OperationKey string `json:"operationKey,omitempty"`
|
|
QueryTemplateKey string `json:"queryTemplateKey,omitempty"`
|
|
Capability string `json:"capability,omitempty"`
|
|
TargetKey string `json:"targetKey,omitempty"`
|
|
JobID string `json:"jobId,omitempty"`
|
|
Attempt int `json:"attempt,omitempty"`
|
|
MaxAttempts int `json:"maxAttempts,omitempty"`
|
|
MutatesState bool `json:"mutatesState,omitempty"`
|
|
Confirmation SCUMOperationConfirmationBody `json:"confirmation,omitempty"`
|
|
SafeSummary SCUMSafeSummaryBody `json:"safeSummary,omitempty"`
|
|
BlockerReason string `json:"blockerReason,omitempty"`
|
|
AuditReferences []string `json:"auditReferences,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
CompletedAt time.Time `json:"completedAt,omitempty"`
|
|
}
|
|
|
|
type SCUMWorkflowStepListResponse struct {
|
|
Items []SCUMWorkflowStepResponse `json:"items"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
func SCUMSafeSummaryFromDomain(value domain.SCUMSafeSummary) SCUMSafeSummaryBody {
|
|
value = domain.CopySCUMSafeSummary(value)
|
|
return SCUMSafeSummaryBody{Title: value.Title, Message: value.Message, Details: value.Details}
|
|
}
|
|
|
|
func scumSafeSummaryToDomain(value SCUMSafeSummaryBody) domain.SCUMSafeSummary {
|
|
return domain.SCUMSafeSummary{Title: value.Title, Message: value.Message, Details: domain.CopyStringMap(value.Details)}
|
|
}
|
|
|
|
func SCUMDataObservationFromDomain(value domain.SCUMDataObservation) SCUMDataObservationResponse {
|
|
value = domain.CopySCUMDataObservation(value)
|
|
return SCUMDataObservationResponse{ID: value.ID, ServerInstanceID: value.ServerInstanceID, PluginID: value.PluginID, Source: value.Source, QueryKey: value.QueryKey, SubjectType: value.SubjectType, SubjectID: value.SubjectID, Sequence: value.Sequence, Checksum: value.Checksum, Status: string(value.Status), ErrorCode: value.ErrorCode, SafeSummary: SCUMSafeSummaryFromDomain(value.SafeSummary), ObservedAt: value.ObservedAt, ReceivedAt: value.ReceivedAt}
|
|
}
|
|
|
|
func SCUMProjectionFreshnessFromDomain(value domain.SCUMProjectionFreshnessState) SCUMProjectionFreshnessBody {
|
|
value = domain.CopySCUMProjectionFreshnessState(value)
|
|
return SCUMProjectionFreshnessBody{Status: string(value.Status), ObservationID: value.ObservationID, Source: value.Source, QueryKey: value.QueryKey, Sequence: value.Sequence, Checksum: value.Checksum, StaleReason: value.StaleReason, ObservedAt: value.ObservedAt, ReceivedAt: value.ReceivedAt}
|
|
}
|
|
|
|
func SCUMOperationRequestBodyToDomain(request SCUMOperationRequestBody) domain.SCUMOperationRequest {
|
|
return domain.SCUMOperationRequest{TemplateKey: request.TemplateKey, PlayerID: request.PlayerID, Payload: domain.CopyGameClientBridgePayload(request.Payload), Guard: scumMutationGuardToDomain(request.Guard), Reason: request.Reason, IdempotencyKey: request.IdempotencyKey}
|
|
}
|
|
|
|
func SCUMWorkflowCreateRequestToDomain(request SCUMWorkflowCreateRequest) domain.SCUMWorkflowInstance {
|
|
return domain.SCUMWorkflowInstance{TemplateKey: request.TemplateKey, IdempotencyKey: request.IdempotencyKey, Input: domain.CopyGameClientBridgePayload(request.Input)}
|
|
}
|
|
|
|
func SCUMOperationFromDomain(value domain.SCUMOperationRequest) SCUMOperationResponse {
|
|
value = domain.CopySCUMOperationRequest(value)
|
|
return SCUMOperationResponse{ID: value.ID, ServerInstanceID: value.ServerInstanceID, PluginID: value.PluginID, TemplateKey: value.TemplateKey, PlayerID: value.PlayerID, RequesterID: value.RequesterID, ApproverID: value.ApproverID, ApprovalLevel: string(value.ApprovalLevel), Payload: value.Payload, Guard: scumMutationGuardFromDomain(value.Guard), Confirmation: scumOperationConfirmationFromDomain(value.Confirmation), Status: string(value.Status), Reason: value.Reason, RunJobID: value.RunJobID, SafeSummary: SCUMSafeSummaryFromDomain(value.SafeSummary), AuditReferences: value.AuditReferences, CreatedAt: value.CreatedAt, ApprovedAt: value.ApprovedAt, CompletedAt: value.CompletedAt, UpdatedAt: value.UpdatedAt}
|
|
}
|
|
|
|
func SCUMOperationsFromDomain(values []domain.SCUMOperationRequest) SCUMOperationListResponse {
|
|
items := make([]SCUMOperationResponse, len(values))
|
|
for index, value := range values {
|
|
items[index] = SCUMOperationFromDomain(value)
|
|
}
|
|
return SCUMOperationListResponse{Items: items, Count: len(items)}
|
|
}
|
|
|
|
func SCUMWorkflowFromDomain(value domain.SCUMWorkflowInstance) SCUMWorkflowResponse {
|
|
value = domain.CopySCUMWorkflowInstance(value)
|
|
return SCUMWorkflowResponse{ID: value.ID, ServerInstanceID: value.ServerInstanceID, PluginID: value.PluginID, TemplateKey: value.TemplateKey, RequestedBy: value.RequestedBy, IdempotencyKey: value.IdempotencyKey, Status: string(value.Status), CurrentStepKey: value.CurrentStepKey, Input: value.Input, SafeSummary: SCUMSafeSummaryFromDomain(value.SafeSummary), BlockerReason: value.BlockerReason, AuditReferences: value.AuditReferences, CreatedAt: value.CreatedAt, UpdatedAt: value.UpdatedAt, CompletedAt: value.CompletedAt}
|
|
}
|
|
|
|
func SCUMWorkflowsFromDomain(values []domain.SCUMWorkflowInstance) SCUMWorkflowListResponse {
|
|
items := make([]SCUMWorkflowResponse, len(values))
|
|
for index, value := range values {
|
|
items[index] = SCUMWorkflowFromDomain(value)
|
|
}
|
|
return SCUMWorkflowListResponse{Items: items, Count: len(items)}
|
|
}
|
|
|
|
func SCUMWorkflowStepFromDomain(value domain.SCUMWorkflowStep) SCUMWorkflowStepResponse {
|
|
value = domain.CopySCUMWorkflowStep(value)
|
|
return SCUMWorkflowStepResponse{ID: value.ID, WorkflowID: value.WorkflowID, ServerInstanceID: value.ServerInstanceID, StepKey: value.StepKey, DependsOn: value.DependsOn, Status: string(value.Status), OperationKey: value.OperationKey, QueryTemplateKey: value.QueryTemplateKey, Capability: value.Capability, TargetKey: value.TargetKey, JobID: value.JobID, Attempt: value.Attempt, MaxAttempts: value.MaxAttempts, MutatesState: value.MutatesState, Confirmation: scumOperationConfirmationFromDomain(value.Confirmation), SafeSummary: SCUMSafeSummaryFromDomain(value.SafeSummary), BlockerReason: value.BlockerReason, AuditReferences: value.AuditReferences, CreatedAt: value.CreatedAt, UpdatedAt: value.UpdatedAt, CompletedAt: value.CompletedAt}
|
|
}
|
|
|
|
func SCUMWorkflowStepsFromDomain(values []domain.SCUMWorkflowStep) SCUMWorkflowStepListResponse {
|
|
items := make([]SCUMWorkflowStepResponse, len(values))
|
|
for index, value := range values {
|
|
items[index] = SCUMWorkflowStepFromDomain(value)
|
|
}
|
|
return SCUMWorkflowStepListResponse{Items: items, Count: len(items)}
|
|
}
|
|
|
|
func scumMutationGuardFromDomain(value domain.SCUMMutationGuard) SCUMMutationGuardBody {
|
|
return SCUMMutationGuardBody{FieldKey: value.FieldKey, Before: value.Before, After: value.After, MaxRowsAffected: value.MaxRowsAffected, SafetyWindow: value.SafetyWindow, BackupRef: value.BackupRef, RequiresOfflinePlayer: value.RequiresOfflinePlayer, RequiresMaintenance: value.RequiresMaintenance, RequiresBackup: value.RequiresBackup}
|
|
}
|
|
|
|
func scumMutationGuardToDomain(value SCUMMutationGuardBody) domain.SCUMMutationGuard {
|
|
return domain.SCUMMutationGuard{FieldKey: value.FieldKey, Before: value.Before, After: value.After, MaxRowsAffected: value.MaxRowsAffected, SafetyWindow: value.SafetyWindow, BackupRef: value.BackupRef, RequiresOfflinePlayer: value.RequiresOfflinePlayer, RequiresMaintenance: value.RequiresMaintenance, RequiresBackup: value.RequiresBackup}
|
|
}
|
|
|
|
func scumOperationConfirmationFromDomain(value domain.SCUMOperationConfirmation) SCUMOperationConfirmationBody {
|
|
value = domain.CopySCUMOperationConfirmation(value)
|
|
return SCUMOperationConfirmationBody{Status: value.Status, ObservationID: value.ObservationID, ConfirmedFields: value.ConfirmedFields, AffectedRows: value.AffectedRows, MutationChecksum: value.MutationChecksum, Checksum: value.Checksum, ObservedAt: value.ObservedAt, SafeSummary: SCUMSafeSummaryFromDomain(value.SafeSummary)}
|
|
}
|
|
|
|
func scumOperationConfirmationToDomain(value SCUMOperationConfirmationBody) domain.SCUMOperationConfirmation {
|
|
return domain.SCUMOperationConfirmation{Status: value.Status, ObservationID: value.ObservationID, ConfirmedFields: domain.CopyGameClientBridgePayload(value.ConfirmedFields), AffectedRows: value.AffectedRows, MutationChecksum: value.MutationChecksum, Checksum: value.Checksum, ObservedAt: value.ObservedAt, SafeSummary: scumSafeSummaryToDomain(value.SafeSummary)}
|
|
}
|