feat: 完整游戏运维功能
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"browser.local/platform/domain"
|
||||
)
|
||||
|
||||
// ClientManagerInstallation is the durable desired/observed lifecycle aggregate for one server/profile.
|
||||
type ClientManagerInstallation struct {
|
||||
// ID is the stable installation identifier.
|
||||
ID string `json:"id" db:"id"`
|
||||
// ServerInstanceID scopes the installation to one authorized server.
|
||||
ServerInstanceID string `json:"serverInstanceId" db:"server_instance_id"`
|
||||
// PluginID identifies the installed game plugin declaration.
|
||||
PluginID string `json:"pluginId" db:"plugin_id"`
|
||||
// ProfileKey identifies the plugin client-manager profile.
|
||||
ProfileKey string `json:"profileKey" db:"profile_key"`
|
||||
// RunEndpointID is the fenced machine executor assignment.
|
||||
RunEndpointID string `json:"runEndpointId" db:"run_endpoint_id"`
|
||||
// TargetOS is the package operating-system target.
|
||||
TargetOS string `json:"targetOs" db:"target_os"`
|
||||
// TargetArch is the package architecture target.
|
||||
TargetArch string `json:"targetArch" db:"target_arch"`
|
||||
// Status is the durable lifecycle state.
|
||||
Status domain.ClientManagerLifecycleStatus `json:"status" db:"status"`
|
||||
// Phase is a bounded safe execution phase.
|
||||
Phase string `json:"phase" db:"phase"`
|
||||
DesiredVersion string `json:"desiredVersion" db:"desired_version"`
|
||||
ActiveVersion string `json:"activeVersion" db:"active_version"`
|
||||
PreviousVersion string `json:"previousVersion" db:"previous_version"`
|
||||
DesiredRevision string `json:"desiredRevision" db:"desired_revision"`
|
||||
ActiveRevision string `json:"activeRevision" db:"active_revision"`
|
||||
PreviousRevision string `json:"previousRevision" db:"previous_revision"`
|
||||
DesiredArtifactID string `json:"desiredArtifactId" db:"desired_artifact_id"`
|
||||
ActiveArtifactID string `json:"activeArtifactId" db:"active_artifact_id"`
|
||||
PreviousArtifactID string `json:"previousArtifactId" db:"previous_artifact_id"`
|
||||
Checksum string `json:"checksum" db:"checksum"`
|
||||
KeyGeneration int `json:"keyGeneration" db:"key_generation"`
|
||||
DeploymentGeneration int `json:"deploymentGeneration" db:"deployment_generation"`
|
||||
CurrentJobID string `json:"currentJobId" db:"current_job_id"`
|
||||
LastSuccessfulJobID string `json:"lastSuccessfulJobId" db:"last_successful_job_id"`
|
||||
LastOperation domain.ClientManagerLifecycleOperation `json:"lastOperation" db:"last_operation"`
|
||||
Health domain.ClientManagerHealthStatus `json:"health" db:"health"`
|
||||
HealthReason string `json:"healthReason" db:"health_reason"`
|
||||
LastSeenAt time.Time `json:"lastSeenAt" db:"last_seen_at"`
|
||||
LastHeartbeatSequence uint64 `json:"lastHeartbeatSequence" db:"last_heartbeat_sequence"`
|
||||
Retryable bool `json:"retryable" db:"retryable"`
|
||||
RequiresRedeploy bool `json:"requiresRedeploy" db:"requires_redeploy"`
|
||||
CreatedAt time.Time `json:"createdAt" db:"created_at"`
|
||||
UpdatedAt time.Time `json:"updatedAt" db:"updated_at"`
|
||||
InstalledAt time.Time `json:"installedAt" db:"installed_at"`
|
||||
UninstalledAt time.Time `json:"uninstalledAt" db:"uninstalled_at"`
|
||||
}
|
||||
|
||||
func (ClientManagerInstallation) TableName() string { return "client_manager_installations" }
|
||||
|
||||
// ClientManagerSession stores only the hash and fences for a short-lived component session.
|
||||
type ClientManagerSession struct {
|
||||
ID string `json:"id" db:"id"`
|
||||
InstallationID string `json:"installationId" db:"installation_id"`
|
||||
ServerInstanceID string `json:"serverInstanceId" db:"server_instance_id"`
|
||||
ProfileKey string `json:"profileKey" db:"profile_key"`
|
||||
RunEndpointID string `json:"runEndpointId" db:"run_endpoint_id"`
|
||||
ArtifactID string `json:"artifactId" db:"artifact_id"`
|
||||
KeyGeneration int `json:"keyGeneration" db:"key_generation"`
|
||||
DeploymentGeneration int `json:"deploymentGeneration" db:"deployment_generation"`
|
||||
TokenHash string `json:"tokenHash" db:"token_hash"`
|
||||
Capabilities []string `json:"capabilities" db:"capabilities"`
|
||||
Status domain.ClientManagerSessionStatus `json:"status" db:"status"`
|
||||
LastHeartbeatSequence uint64 `json:"lastHeartbeatSequence" db:"last_heartbeat_sequence"`
|
||||
LastSeenAt time.Time `json:"lastSeenAt" db:"last_seen_at"`
|
||||
ExpiresAt time.Time `json:"expiresAt" db:"expires_at"`
|
||||
CreatedAt time.Time `json:"createdAt" db:"created_at"`
|
||||
UpdatedAt time.Time `json:"updatedAt" db:"updated_at"`
|
||||
RevokedAt time.Time `json:"revokedAt" db:"revoked_at"`
|
||||
}
|
||||
|
||||
func (ClientManagerSession) TableName() string { return "client_manager_sessions" }
|
||||
|
||||
// ClientManagerRegistrationNonce is a bounded replay fence for one signed registration request.
|
||||
type ClientManagerRegistrationNonce struct {
|
||||
ID string `json:"id" db:"id"`
|
||||
InstallationID string `json:"installationId" db:"installation_id"`
|
||||
ExpiresAt time.Time `json:"expiresAt" db:"expires_at"`
|
||||
CreatedAt time.Time `json:"createdAt" db:"created_at"`
|
||||
}
|
||||
|
||||
func (ClientManagerRegistrationNonce) TableName() string { return "client_manager_registration_nonces" }
|
||||
|
||||
func ClientManagerInstallationFromDomain(value domain.ClientManagerInstallation) ClientManagerInstallation {
|
||||
return ClientManagerInstallation(value)
|
||||
}
|
||||
|
||||
func (value ClientManagerInstallation) ToDomain() domain.ClientManagerInstallation {
|
||||
return domain.ClientManagerInstallation(value)
|
||||
}
|
||||
|
||||
func ClientManagerSessionFromDomain(value domain.ClientManagerSession) ClientManagerSession {
|
||||
value = domain.CopyClientManagerSession(value)
|
||||
return ClientManagerSession(value)
|
||||
}
|
||||
|
||||
func (value ClientManagerSession) ToDomain() domain.ClientManagerSession {
|
||||
return domain.CopyClientManagerSession(domain.ClientManagerSession(value))
|
||||
}
|
||||
|
||||
func ClientManagerRegistrationNonceFromDomain(value domain.ClientManagerRegistrationNonce) ClientManagerRegistrationNonce {
|
||||
return ClientManagerRegistrationNonce(value)
|
||||
}
|
||||
|
||||
func (value ClientManagerRegistrationNonce) ToDomain() domain.ClientManagerRegistrationNonce {
|
||||
return domain.ClientManagerRegistrationNonce(value)
|
||||
}
|
||||
Reference in New Issue
Block a user