126 lines
6.7 KiB
Go
126 lines
6.7 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"`
|
|
}
|
|
|
|
type AIConfigDiffPreviewResponse struct {
|
|
ID string `json:"id"`
|
|
RequestID string `json:"requestId"`
|
|
CreatedBy string `json:"createdBy"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
PluginID string `json:"pluginId,omitempty"`
|
|
ProviderID string `json:"providerId,omitempty"`
|
|
Model string `json:"model,omitempty"`
|
|
Key string `json:"key"`
|
|
ConfigVersion int `json:"configVersion"`
|
|
CurrentConfigChecksum string `json:"currentConfigChecksum,omitempty"`
|
|
ProposedConfig string `json:"proposedConfig,omitempty"`
|
|
DiffSummary string `json:"diffSummary"`
|
|
State string `json:"state"`
|
|
ExpiresAt time.Time `json:"expiresAt"`
|
|
ApprovedBy string `json:"approvedBy,omitempty"`
|
|
ApprovedAt time.Time `json:"approvedAt,omitempty"`
|
|
CancelledBy string `json:"cancelledBy,omitempty"`
|
|
CancelledAt time.Time `json:"cancelledAt,omitempty"`
|
|
JobID string `json:"jobId,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
type AIConfigDiffListResponse struct {
|
|
Items []AIConfigDiffPreviewResponse `json:"items"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
type AIConfigDiffApprovalRequest struct {
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
}
|
|
|
|
type AIConfigDiffApprovalResponse struct {
|
|
Preview AIConfigDiffPreviewResponse `json:"preview"`
|
|
Dispatch ServerConfigWriteDispatchResponse `json:"dispatch"`
|
|
}
|
|
|
|
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)}
|
|
}
|
|
|
|
func AIConfigDiffFromDomain(preview domain.AIConfigDiffPreview) AIConfigDiffPreviewResponse {
|
|
preview = domain.CopyAIConfigDiffPreview(preview)
|
|
return AIConfigDiffPreviewResponse{ID: preview.ID, RequestID: preview.RequestID, CreatedBy: preview.CreatedBy, ServerInstanceID: preview.ServerInstanceID, PluginID: preview.PluginID, ProviderID: preview.ProviderID, Model: preview.Model, Key: preview.Key, ConfigVersion: preview.ConfigVersion, CurrentConfigChecksum: preview.CurrentConfigChecksum, ProposedConfig: preview.ProposedConfig, DiffSummary: preview.DiffSummary, State: string(preview.State), ExpiresAt: preview.ExpiresAt, ApprovedBy: preview.ApprovedBy, ApprovedAt: preview.ApprovedAt, CancelledBy: preview.CancelledBy, CancelledAt: preview.CancelledAt, JobID: preview.JobID, CreatedAt: preview.CreatedAt, UpdatedAt: preview.UpdatedAt}
|
|
}
|
|
|
|
func AIConfigDiffListFromDomain(previews []domain.AIConfigDiffPreview) AIConfigDiffListResponse {
|
|
items := make([]AIConfigDiffPreviewResponse, len(previews))
|
|
for i, preview := range previews {
|
|
items[i] = AIConfigDiffFromDomain(preview)
|
|
}
|
|
return AIConfigDiffListResponse{Items: items, Count: len(items)}
|
|
}
|
|
|
|
func (request AIConfigDiffApprovalRequest) ToDomain(diffID string) domain.AIConfigDiffApprovalRequest {
|
|
return domain.AIConfigDiffApprovalRequest{DiffID: diffID, IdempotencyKey: request.IdempotencyKey}
|
|
}
|
|
|
|
func AIConfigDiffApprovalFromDomain(result domain.AIConfigDiffApprovalResult) AIConfigDiffApprovalResponse {
|
|
result = domain.CopyAIConfigDiffApprovalResult(result)
|
|
return AIConfigDiffApprovalResponse{Preview: AIConfigDiffFromDomain(result.Preview), Dispatch: ServerConfigWriteDispatchFromDomain(result.Dispatch)}
|
|
}
|