Files
browser/platform/dto/plugin_operations.go
T

66 lines
3.4 KiB
Go

package dto
import (
"time"
"browser.local/platform/domain"
)
type PluginLifecycleActionRequest struct {
ServerInstanceID string `json:"serverInstanceId"`
Operation string `json:"operation"`
TargetVersion string `json:"targetVersion,omitempty"`
IdempotencyKey string `json:"idempotencyKey"`
}
type PluginLifecycleInstallationResponse struct {
ID string `json:"id"`
PluginID string `json:"pluginId"`
ServerInstanceID string `json:"serverInstanceId"`
CurrentVersion string `json:"currentVersion,omitempty"`
TargetVersion string `json:"targetVersion,omitempty"`
PreviousVersion string `json:"previousVersion,omitempty"`
DesiredState string `json:"desiredState"`
CurrentState string `json:"currentState"`
LastOperation string `json:"lastOperation,omitempty"`
Compatibility string `json:"compatibility,omitempty"`
DependencyState string `json:"dependencyState,omitempty"`
JobID string `json:"jobId,omitempty"`
FailureReason string `json:"failureReason,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type PluginLifecycleListResponse struct {
Items []PluginLifecycleInstallationResponse `json:"items"`
Count int `json:"count"`
}
type PluginLifecycleActionResponse struct {
Status string `json:"status"`
Installation PluginLifecycleInstallationResponse `json:"installation"`
Job JobResponse `json:"job"`
}
func (request PluginLifecycleActionRequest) ToDomain(pluginID string) domain.PluginLifecycleRequest {
return domain.PluginLifecycleRequest{PluginID: pluginID, ServerInstanceID: request.ServerInstanceID, Operation: domain.PluginLifecycleOperation(request.Operation), TargetVersion: request.TargetVersion, IdempotencyKey: request.IdempotencyKey}
}
func PluginLifecycleFromDomain(installation domain.PluginLifecycleInstallation) PluginLifecycleInstallationResponse {
installation = domain.CopyPluginLifecycleInstallation(installation)
return PluginLifecycleInstallationResponse{ID: installation.ID, PluginID: installation.PluginID, ServerInstanceID: installation.ServerInstanceID, CurrentVersion: installation.CurrentVersion, TargetVersion: installation.TargetVersion, PreviousVersion: installation.PreviousVersion, DesiredState: string(installation.DesiredState), CurrentState: string(installation.CurrentState), LastOperation: string(installation.LastOperation), Compatibility: installation.Compatibility, DependencyState: string(installation.DependencyState), JobID: installation.JobID, FailureReason: installation.FailureReason, CreatedAt: installation.CreatedAt, UpdatedAt: installation.UpdatedAt}
}
func PluginLifecycleListFromDomain(installations []domain.PluginLifecycleInstallation) PluginLifecycleListResponse {
items := make([]PluginLifecycleInstallationResponse, len(installations))
for i, installation := range installations {
items[i] = PluginLifecycleFromDomain(installation)
}
return PluginLifecycleListResponse{Items: items, Count: len(items)}
}
func PluginLifecycleResultFromDomain(result domain.PluginLifecycleResult) PluginLifecycleActionResponse {
result = domain.CopyPluginLifecycleResult(result)
return PluginLifecycleActionResponse{Status: result.Status, Installation: PluginLifecycleFromDomain(result.Installation), Job: JobFromDomain(result.Job)}
}