feat: support custom server deployment drafts

This commit is contained in:
npc0-hue
2026-07-24 16:56:28 +08:00
parent 292b380f3c
commit 220ef91a8e
36 changed files with 1520 additions and 85 deletions
+45 -4
View File
@@ -187,11 +187,22 @@ type GamePluginBridgeBody struct {
Actions []string `json:"actions"`
}
type PluginCreateFieldBody struct {
Key string `json:"key"`
Label string `json:"label"`
Type string `json:"type"`
Required bool `json:"required,omitempty"`
DefaultValue string `json:"defaultValue,omitempty"`
Options []string `json:"options,omitempty"`
ConfigKey string `json:"configKey,omitempty"`
}
type GamePluginManifestServerBody struct {
Type string `json:"type"`
DisplayName string `json:"displayName"`
SupportedOS []string `json:"supportedOs,omitempty"`
CreateFormSchema string `json:"createFormSchema"`
Type string `json:"type"`
DisplayName string `json:"displayName"`
SupportedOS []string `json:"supportedOs,omitempty"`
CreateFormSchema string `json:"createFormSchema"`
CreateFields []PluginCreateFieldBody `json:"createFields,omitempty"`
}
type GamePluginManifestAIBody struct {
@@ -314,6 +325,7 @@ type GamePluginCreateRequest struct {
SupportedOS []string `json:"supportedOs,omitempty"`
ManifestRef string `json:"manifestRef"`
CreateFormSchemaRef string `json:"createFormSchemaRef"`
CreateFields []PluginCreateFieldBody `json:"createFields,omitempty"`
RequiredRunCapabilities []string `json:"requiredRunCapabilities"`
DeclaredPermissions []string `json:"declaredPermissions,omitempty"`
Permissions PluginPermissionsResponse `json:"permissions"`
@@ -339,6 +351,7 @@ type GamePluginResponse struct {
SupportedOS []string `json:"supportedOs,omitempty"`
ManifestRef string `json:"manifestRef"`
CreateFormSchemaRef string `json:"createFormSchemaRef"`
CreateFields []PluginCreateFieldBody `json:"createFields,omitempty"`
RequiredRunCapabilities []string `json:"requiredRunCapabilities"`
DeclaredPermissions []string `json:"declaredPermissions"`
Permissions PluginPermissionsResponse `json:"permissions"`
@@ -656,6 +669,7 @@ type JobCreateRequest struct {
type JobProgressBody struct {
Percent int `json:"percent"`
Phase string `json:"phase,omitempty"`
Message string `json:"message,omitempty"`
}
@@ -929,12 +943,35 @@ func (bridge GamePluginBridgeBody) ToDomain() domain.GamePluginBridge {
return domain.GamePluginBridge{Actions: domain.CopyStringSlice(bridge.Actions)}
}
func pluginCreateFieldsToDomain(fields []PluginCreateFieldBody) []domain.PluginCreateField {
if fields == nil {
return nil
}
out := make([]domain.PluginCreateField, len(fields))
for i, field := range fields {
out[i] = domain.PluginCreateField{Key: field.Key, Label: field.Label, Type: field.Type, Required: field.Required, DefaultValue: field.DefaultValue, Options: domain.CopyStringSlice(field.Options), ConfigKey: field.ConfigKey}
}
return out
}
func pluginCreateFieldsFromDomain(fields []domain.PluginCreateField) []PluginCreateFieldBody {
if fields == nil {
return nil
}
out := make([]PluginCreateFieldBody, len(fields))
for i, field := range fields {
out[i] = PluginCreateFieldBody{Key: field.Key, Label: field.Label, Type: field.Type, Required: field.Required, DefaultValue: field.DefaultValue, Options: domain.CopyStringSlice(field.Options), ConfigKey: field.ConfigKey}
}
return out
}
func (server GamePluginManifestServerBody) ToDomain() domain.GamePluginManifestServer {
return domain.GamePluginManifestServer{
Type: server.Type,
DisplayName: server.DisplayName,
SupportedOS: domain.CopyStringSlice(server.SupportedOS),
CreateFormSchema: server.CreateFormSchema,
CreateFields: pluginCreateFieldsToDomain(server.CreateFields),
}
}
@@ -1001,6 +1038,7 @@ func (request GamePluginCreateRequest) ToDomain() domain.GamePlugin {
SupportedOS: domain.CopyStringSlice(request.SupportedOS),
ManifestRef: request.ManifestRef,
CreateFormSchemaRef: request.CreateFormSchemaRef,
CreateFields: pluginCreateFieldsToDomain(request.CreateFields),
RequiredRunCapabilities: domain.CopyStringSlice(request.RequiredRunCapabilities),
DeclaredPermissions: domain.CopyStringSlice(request.DeclaredPermissions),
Permissions: permissionsToDomain(request.Permissions),
@@ -1247,6 +1285,7 @@ func GamePluginFromDomain(plugin domain.GamePlugin) GamePluginResponse {
SupportedOS: plugin.SupportedOS,
ManifestRef: plugin.ManifestRef,
CreateFormSchemaRef: plugin.CreateFormSchemaRef,
CreateFields: pluginCreateFieldsFromDomain(plugin.CreateFields),
RequiredRunCapabilities: plugin.RequiredRunCapabilities,
DeclaredPermissions: plugin.DeclaredPermissions,
Permissions: permissionsFromDomain(plugin.Permissions),
@@ -1785,6 +1824,7 @@ func capacityToDomain(capacity RunCapacityResponse) domain.RunCapacity {
func progressFromDomain(progress domain.JobProgress) JobProgressBody {
return JobProgressBody{
Percent: progress.Percent,
Phase: progress.Phase,
Message: progress.Message,
}
}
@@ -1792,6 +1832,7 @@ func progressFromDomain(progress domain.JobProgress) JobProgressBody {
func progressToDomain(progress JobProgressBody) domain.JobProgress {
return domain.JobProgress{
Percent: progress.Percent,
Phase: progress.Phase,
Message: progress.Message,
}
}