108 lines
4.9 KiB
Go
108 lines
4.9 KiB
Go
package request
|
||
|
||
import (
|
||
common "git.echol.cn/loser/st/server/model/common/request"
|
||
)
|
||
|
||
// CreateExtensionRequest 创建/安装扩展请求
|
||
type CreateExtensionRequest struct {
|
||
Name string `json:"name" binding:"required,min=1,max=500"`
|
||
DisplayName string `json:"displayName"`
|
||
Version string `json:"version"`
|
||
Author string `json:"author"`
|
||
Description string `json:"description"`
|
||
Homepage string `json:"homepage"`
|
||
Repository string `json:"repository"`
|
||
License string `json:"license"`
|
||
Tags []string `json:"tags"`
|
||
ExtensionType string `json:"extensionType" binding:"required,oneof=ui server hybrid"`
|
||
Category string `json:"category"`
|
||
Dependencies map[string]string `json:"dependencies"`
|
||
Conflicts []string `json:"conflicts"`
|
||
ManifestData map[string]interface{} `json:"manifestData" binding:"required"`
|
||
ScriptPath string `json:"scriptPath"`
|
||
StylePath string `json:"stylePath"`
|
||
AssetsPaths []string `json:"assetsPaths"`
|
||
Settings map[string]interface{} `json:"settings"`
|
||
Options map[string]interface{} `json:"options"`
|
||
InstallSource string `json:"installSource"`
|
||
SourceURL string `json:"sourceUrl"` // 原始安装 URL(用于更新)
|
||
Branch string `json:"branch"` // Git 分支
|
||
AutoUpdate bool `json:"autoUpdate"` // 是否自动更新
|
||
Metadata map[string]interface{} `json:"metadata"`
|
||
}
|
||
|
||
// ExtensionListRequest 扩展列表查询请求
|
||
type ExtensionListRequest struct {
|
||
common.PageInfo
|
||
Name string `json:"name" form:"name"` // 扩展名称(模糊搜索)
|
||
ExtensionType string `json:"extensionType" form:"extensionType"` // 扩展类型
|
||
Category string `json:"category" form:"category"` // 分类
|
||
IsEnabled *bool `json:"isEnabled" form:"isEnabled"` // 是否启用
|
||
IsInstalled *bool `json:"isInstalled" form:"isInstalled"` // 是否已安装
|
||
Tag string `json:"tag" form:"tag"` // 标签过滤
|
||
}
|
||
|
||
// InstallExtensionRequest 安装扩展请求
|
||
type InstallExtensionRequest struct {
|
||
Source string `json:"source" binding:"required,oneof=url file marketplace"` // 安装来源
|
||
URL string `json:"url"` // URL 安装
|
||
ManifestData []byte `json:"manifestData"` // 文件安装
|
||
MarketplaceID string `json:"marketplaceId"` // 市场安装
|
||
}
|
||
|
||
// UninstallExtensionRequest 卸载扩展请求
|
||
type UninstallExtensionRequest struct {
|
||
DeleteFiles bool `json:"deleteFiles"` // 是否删除文件
|
||
}
|
||
|
||
// ToggleExtensionRequest 启用/禁用扩展请求
|
||
type ToggleExtensionRequest struct {
|
||
IsEnabled *bool `json:"isEnabled"` // 使用指针类型,允许 false 值
|
||
}
|
||
|
||
// UpdateExtensionSettingsRequest 更新扩展配置请求
|
||
type UpdateExtensionSettingsRequest struct {
|
||
Settings map[string]interface{} `json:"settings" binding:"required"`
|
||
}
|
||
|
||
// ImportExtensionRequest 导入扩展请求
|
||
type ImportExtensionRequest struct {
|
||
Format string `json:"format" binding:"required,oneof=zip folder"`
|
||
}
|
||
|
||
// ExportExtensionRequest 导出扩展请求
|
||
type ExportExtensionRequest struct {
|
||
Format string `json:"format" binding:"required,oneof=zip folder"`
|
||
IncludeAssets bool `json:"includeAssets"` // 是否包含资源文件
|
||
}
|
||
|
||
// ExtensionStatsRequest 扩展统计请求
|
||
type ExtensionStatsRequest struct {
|
||
ExtensionID uint `json:"extensionId" binding:"required"`
|
||
Action string `json:"action" binding:"required,oneof=usage error load"` // 统计类型
|
||
Value int `json:"value"`
|
||
}
|
||
|
||
// InstallExtensionFromGitRequest 从 Git URL 安装扩展请求
|
||
type InstallExtensionFromGitRequest struct {
|
||
GitUrl string `json:"gitUrl" binding:"required"` // Git 仓库 URL
|
||
Branch string `json:"branch" binding:"omitempty,max=100"` // 分支名称(可选,默认 main)
|
||
}
|
||
|
||
// InstallExtensionFromURLRequest 从 URL 安装扩展请求(智能识别 Git URL 或 Manifest URL)
|
||
type InstallExtensionFromURLRequest struct {
|
||
URL string `json:"url" binding:"required"` // Git 仓库 URL 或 Manifest.json URL
|
||
Branch string `json:"branch"` // Git 分支名称(可选,默认 main)
|
||
}
|
||
|
||
// UpdateExtensionRequest 更新扩展请求
|
||
type UpdateExtensionRequest struct {
|
||
Force bool `json:"force"` // 是否强制更新(忽略本地修改)
|
||
DisplayName string `json:"displayName"`
|
||
Description string `json:"description"`
|
||
Settings map[string]interface{} `json:"settings"`
|
||
Options map[string]interface{} `json:"options"`
|
||
Metadata map[string]interface{} `json:"metadata"`
|
||
}
|