Complete platform management workflows

This commit is contained in:
npc0-hue
2026-07-14 16:39:37 +08:00
parent 7e05d0a4e7
commit 4f33f761a3
106 changed files with 11313 additions and 460 deletions
+346
View File
@@ -0,0 +1,346 @@
package dto
import (
"time"
"browser.local/platform/domain"
)
type RunDistributionGenerateRequest struct {
TargetOS string `json:"targetOs"`
TargetArch string `json:"targetArch"`
IdempotencyKey string `json:"idempotencyKey,omitempty"`
}
type RunUpdateRequest struct {
ArtifactID string `json:"artifactId"`
Checksum string `json:"checksum,omitempty"`
IdempotencyKey string `json:"idempotencyKey,omitempty"`
}
type DependencyJobRequest struct {
ProbeKey string `json:"probeKey"`
InstallPlanKey string `json:"installPlanKey,omitempty"`
TargetOS string `json:"targetOs,omitempty"`
TargetArch string `json:"targetArch,omitempty"`
IdempotencyKey string `json:"idempotencyKey,omitempty"`
}
type LogBackfillRequest struct {
SourceKey string `json:"sourceKey"`
CheckpointRef string `json:"checkpointRef,omitempty"`
Limit int `json:"limit,omitempty"`
IdempotencyKey string `json:"idempotencyKey,omitempty"`
}
type ClientManagerDownloadRequest struct {
ProfileKey string `json:"profileKey,omitempty"`
}
type ClientManagerBuildRequest struct {
ProfileKey string `json:"profileKey"`
TargetOS string `json:"targetOs"`
TargetArch string `json:"targetArch"`
RepositoryURL string `json:"repositoryUrl"`
SourceRevision string `json:"sourceRevision,omitempty"`
IdempotencyKey string `json:"idempotencyKey,omitempty"`
}
type ComponentKeyResetRequest struct {
ComponentKind string `json:"componentKind"`
ComponentKey string `json:"componentKey,omitempty"`
}
type ComponentKeyResponse struct {
ID string `json:"id"`
ServerInstanceID string `json:"serverInstanceId"`
ComponentKind string `json:"componentKind"`
ComponentKey string `json:"componentKey,omitempty"`
SecretRef string `json:"secretRef"`
Fingerprint string `json:"fingerprint"`
Generation int `json:"generation"`
Status string `json:"status"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
ResetAt time.Time `json:"resetAt,omitempty"`
}
type ServerRuntimeActionResponse struct {
Key string `json:"key"`
Label string `json:"label"`
Available bool `json:"available"`
Reason string `json:"reason,omitempty"`
}
type ServerRuntimeActionsResponse struct {
ServerInstanceID string `json:"serverInstanceId"`
PluginID string `json:"pluginId"`
RunEndpointID string `json:"runEndpointId"`
RunStatus string `json:"runStatus"`
Actions []ServerRuntimeActionResponse `json:"actions"`
}
type RunDistributionResponse struct {
ID string `json:"id"`
ServerInstanceID string `json:"serverInstanceId"`
PluginID string `json:"pluginId"`
RunEndpointID string `json:"runEndpointId"`
TargetOS string `json:"targetOs"`
TargetArch string `json:"targetArch"`
PackageFormat string `json:"packageFormat"`
ArtifactID string `json:"artifactId"`
Checksum string `json:"checksum"`
KeyGeneration int `json:"keyGeneration"`
SecretRef string `json:"secretRef"`
Status string `json:"status"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type ClientManagerDistributionResponse struct {
ID string `json:"id"`
ServerInstanceID string `json:"serverInstanceId"`
PluginID string `json:"pluginId"`
ProfileKey string `json:"profileKey"`
TargetOS string `json:"targetOs"`
TargetArch string `json:"targetArch"`
RepositoryURL string `json:"repositoryUrl"`
SourceRevision string `json:"sourceRevision"`
BuildJobID string `json:"buildJobId"`
ArtifactID string `json:"artifactId"`
Checksum string `json:"checksum"`
KeyGeneration int `json:"keyGeneration"`
SecretRef string `json:"secretRef"`
Status string `json:"status"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type DependencyStatusResponse struct {
ID string `json:"id"`
ServerInstanceID string `json:"serverInstanceId"`
PluginID string `json:"pluginId"`
ProbeKey string `json:"probeKey"`
TargetOS string `json:"targetOs"`
TargetArch string `json:"targetArch"`
State string `json:"state"`
Required bool `json:"required"`
InstallPlanKey string `json:"installPlanKey,omitempty"`
Message string `json:"message,omitempty"`
CheckedAt time.Time `json:"checkedAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type ClientManagerBuildJobResponse struct {
ID string `json:"id"`
ServerInstanceID string `json:"serverInstanceId"`
PluginID string `json:"pluginId"`
ProfileKey string `json:"profileKey"`
TargetOS string `json:"targetOs"`
TargetArch string `json:"targetArch"`
RepositoryURL string `json:"repositoryUrl"`
SourceRevision string `json:"sourceRevision"`
ArtifactID string `json:"artifactId,omitempty"`
Checksum string `json:"checksum,omitempty"`
KeyGeneration int `json:"keyGeneration,omitempty"`
LogsRef string `json:"logsRef,omitempty"`
Status string `json:"status"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type RunUpdateJobResponse struct {
ID string `json:"id"`
ServerInstanceID string `json:"serverInstanceId"`
RunEndpointID string `json:"runEndpointId"`
ArtifactID string `json:"artifactId"`
Checksum string `json:"checksum"`
JobID string `json:"jobId,omitempty"`
IdempotencyKey string `json:"idempotencyKey,omitempty"`
Status string `json:"status"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
func (request RunDistributionGenerateRequest) ToDomain(serverInstanceID string) domain.RunDistributionGenerateRequest {
return domain.RunDistributionGenerateRequest{
ServerInstanceID: serverInstanceID,
TargetOS: request.TargetOS,
TargetArch: request.TargetArch,
IdempotencyKey: request.IdempotencyKey,
}
}
func (request RunUpdateRequest) ToDomain(serverInstanceID string) domain.RunUpdateRequest {
return domain.RunUpdateRequest{
ServerInstanceID: serverInstanceID,
ArtifactID: request.ArtifactID,
Checksum: request.Checksum,
IdempotencyKey: request.IdempotencyKey,
}
}
func (request DependencyJobRequest) ToDomain(serverInstanceID string, install bool) domain.DependencyJobRequest {
return domain.DependencyJobRequest{
ServerInstanceID: serverInstanceID,
ProbeKey: request.ProbeKey,
InstallPlanKey: request.InstallPlanKey,
TargetOS: request.TargetOS,
TargetArch: request.TargetArch,
IdempotencyKey: request.IdempotencyKey,
Install: install,
}
}
func (request LogBackfillRequest) ToDomain(serverInstanceID string) domain.LogBackfillRequest {
return domain.LogBackfillRequest{
ServerInstanceID: serverInstanceID,
SourceKey: request.SourceKey,
CheckpointRef: request.CheckpointRef,
Limit: request.Limit,
IdempotencyKey: request.IdempotencyKey,
}
}
func (request ClientManagerBuildRequest) ToDomain(serverInstanceID string) domain.ClientManagerBuildRequest {
return domain.ClientManagerBuildRequest{
ServerInstanceID: serverInstanceID,
ProfileKey: request.ProfileKey,
TargetOS: request.TargetOS,
TargetArch: request.TargetArch,
RepositoryURL: request.RepositoryURL,
SourceRevision: request.SourceRevision,
IdempotencyKey: request.IdempotencyKey,
}
}
func (request ComponentKeyResetRequest) ToDomain(serverInstanceID string) domain.ComponentKeyResetRequest {
return domain.ComponentKeyResetRequest{
ServerInstanceID: serverInstanceID,
ComponentKind: domain.DistributionComponentKind(request.ComponentKind),
ComponentKey: request.ComponentKey,
}
}
func ComponentKeyFromDomain(key domain.EncryptedComponentKey) ComponentKeyResponse {
return ComponentKeyResponse{
ID: key.ID,
ServerInstanceID: key.ServerInstanceID,
ComponentKind: string(key.ComponentKind),
ComponentKey: key.ComponentKey,
SecretRef: key.SecretRef,
Fingerprint: key.Fingerprint,
Generation: key.Generation,
Status: string(key.Status),
CreatedAt: key.CreatedAt,
UpdatedAt: key.UpdatedAt,
ResetAt: key.ResetAt,
}
}
func ServerRuntimeActionsFromDomain(actions domain.ServerRuntimeActions) ServerRuntimeActionsResponse {
actions = domain.CopyServerRuntimeActions(actions)
items := make([]ServerRuntimeActionResponse, len(actions.Actions))
for i, action := range actions.Actions {
items[i] = ServerRuntimeActionResponse{Key: action.Key, Label: action.Label, Available: action.Available, Reason: action.Reason}
}
return ServerRuntimeActionsResponse{
ServerInstanceID: actions.ServerInstanceID,
PluginID: actions.PluginID,
RunEndpointID: actions.RunEndpointID,
RunStatus: string(actions.RunStatus),
Actions: items,
}
}
func RunDistributionFromDomain(distribution domain.RunDistribution) RunDistributionResponse {
return RunDistributionResponse{
ID: distribution.ID,
ServerInstanceID: distribution.ServerInstanceID,
PluginID: distribution.PluginID,
RunEndpointID: distribution.RunEndpointID,
TargetOS: distribution.TargetOS,
TargetArch: distribution.TargetArch,
PackageFormat: distribution.PackageFormat,
ArtifactID: distribution.ArtifactID,
Checksum: distribution.Checksum,
KeyGeneration: distribution.KeyGeneration,
SecretRef: distribution.SecretRef,
Status: string(distribution.Status),
CreatedAt: distribution.CreatedAt,
UpdatedAt: distribution.UpdatedAt,
}
}
func ClientManagerDistributionFromDomain(distribution domain.ClientManagerDistribution) ClientManagerDistributionResponse {
return ClientManagerDistributionResponse{
ID: distribution.ID,
ServerInstanceID: distribution.ServerInstanceID,
PluginID: distribution.PluginID,
ProfileKey: distribution.ProfileKey,
TargetOS: distribution.TargetOS,
TargetArch: distribution.TargetArch,
RepositoryURL: distribution.RepositoryURL,
SourceRevision: distribution.SourceRevision,
BuildJobID: distribution.BuildJobID,
ArtifactID: distribution.ArtifactID,
Checksum: distribution.Checksum,
KeyGeneration: distribution.KeyGeneration,
SecretRef: distribution.SecretRef,
Status: string(distribution.Status),
CreatedAt: distribution.CreatedAt,
UpdatedAt: distribution.UpdatedAt,
}
}
func DependencyStatusFromDomain(status domain.DependencyStatus) DependencyStatusResponse {
return DependencyStatusResponse{
ID: status.ID,
ServerInstanceID: status.ServerInstanceID,
PluginID: status.PluginID,
ProbeKey: status.ProbeKey,
TargetOS: status.TargetOS,
TargetArch: status.TargetArch,
State: string(status.State),
Required: status.Required,
InstallPlanKey: status.InstallPlanKey,
Message: status.Message,
CheckedAt: status.CheckedAt,
UpdatedAt: status.UpdatedAt,
}
}
func ClientManagerBuildJobFromDomain(job domain.ClientManagerBuildJob) ClientManagerBuildJobResponse {
return ClientManagerBuildJobResponse{
ID: job.ID,
ServerInstanceID: job.ServerInstanceID,
PluginID: job.PluginID,
ProfileKey: job.ProfileKey,
TargetOS: job.TargetOS,
TargetArch: job.TargetArch,
RepositoryURL: job.RepositoryURL,
SourceRevision: job.SourceRevision,
ArtifactID: job.ArtifactID,
Checksum: job.Checksum,
KeyGeneration: job.KeyGeneration,
LogsRef: job.LogsRef,
Status: string(job.Status),
CreatedAt: job.CreatedAt,
UpdatedAt: job.UpdatedAt,
}
}
func RunUpdateJobFromDomain(job domain.RunUpdateJob) RunUpdateJobResponse {
return RunUpdateJobResponse{
ID: job.ID,
ServerInstanceID: job.ServerInstanceID,
RunEndpointID: job.RunEndpointID,
ArtifactID: job.ArtifactID,
Checksum: job.Checksum,
JobID: job.JobID,
IdempotencyKey: job.IdempotencyKey,
Status: string(job.Status),
CreatedAt: job.CreatedAt,
UpdatedAt: job.UpdatedAt,
}
}