206 lines
7.1 KiB
Go
206 lines
7.1 KiB
Go
|
package dtos
|
|||
|
|
|||
|
import (
|
|||
|
"github.com/winc-link/hummingbird/internal/models"
|
|||
|
)
|
|||
|
|
|||
|
type DeviceLibrary struct {
|
|||
|
Id string
|
|||
|
Name string // 容器名/软件名
|
|||
|
Alias string
|
|||
|
Description string
|
|||
|
Protocol string
|
|||
|
Version string
|
|||
|
LibFile string
|
|||
|
ConfigFile string
|
|||
|
Config string
|
|||
|
DockerConfigId string
|
|||
|
DockerRepoName string
|
|||
|
DockerImageId string
|
|||
|
//SupportVersions []DeviceLibrarySupportVersion
|
|||
|
IsInternal bool
|
|||
|
OperateStatus string // 下载状态
|
|||
|
}
|
|||
|
|
|||
|
func DeviceLibraryFromModel(d models.DeviceLibrary) DeviceLibrary {
|
|||
|
return DeviceLibrary{
|
|||
|
Id: d.Id,
|
|||
|
Name: d.Name,
|
|||
|
Description: d.Description,
|
|||
|
Protocol: d.Protocol,
|
|||
|
Version: d.Version,
|
|||
|
//LibFile: d.LibFile,
|
|||
|
//ConfigFile: d.ConfigFile,
|
|||
|
DockerConfigId: d.DockerConfigId,
|
|||
|
DockerRepoName: d.DockerRepoName,
|
|||
|
DockerImageId: d.DockerImageId,
|
|||
|
//SupportVersions: SupperVersionsFromModel(d.SupportVersions),
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
type DeviceLibraryAddRequest struct {
|
|||
|
Id string `json:"id,omitempty"`
|
|||
|
Name string `json:"name" binding:"required"`
|
|||
|
Description string `json:"description,omitempty"`
|
|||
|
Protocol string `json:"protocol"`
|
|||
|
Version string `json:"version" binding:"required"`
|
|||
|
ContainerName string `json:"container_name" binding:"required"`
|
|||
|
DockerConfigId string `json:"docker_config_id" binding:"required"`
|
|||
|
DockerRepoName string `json:"docker_repo_name" binding:"required"`
|
|||
|
Language string `json:"language"` //代码语言
|
|||
|
SupportVersion struct {
|
|||
|
IsDefault bool `json:"is_default"`
|
|||
|
DockerParamsSwitch bool `json:"docker_params_switch"`
|
|||
|
DockerParams string `json:"docker_params"`
|
|||
|
ExpertMode bool `json:"expert_mode"`
|
|||
|
ExpertModeContent string `json:"expert_mode_content"`
|
|||
|
ConfigJson string `json:"config_json"`
|
|||
|
} `json:"support_version"`
|
|||
|
}
|
|||
|
|
|||
|
func FromDeviceLibraryRpcToModel(p *DeviceLibraryAddRequest) models.DeviceLibrary {
|
|||
|
dl := models.DeviceLibrary{
|
|||
|
Id: p.Id,
|
|||
|
Name: p.Name,
|
|||
|
Description: p.Description,
|
|||
|
Protocol: p.Protocol,
|
|||
|
Version: p.Version,
|
|||
|
ContainerName: p.ContainerName,
|
|||
|
DockerRepoName: p.DockerRepoName,
|
|||
|
DockerConfigId: p.DockerConfigId,
|
|||
|
Language: p.Language,
|
|||
|
}
|
|||
|
//dl.SupportVersions = append(dl.SupportVersions, models.SupportVersion{
|
|||
|
// Version: p.Version,
|
|||
|
// IsDefault: p.IsDefault,
|
|||
|
// ConfigJson: p.ConfigJson,
|
|||
|
// ConfigFile: p.ConfigFile,
|
|||
|
// DockerParamsSwitch: p.DockerParamsSwitch,
|
|||
|
// DockerParams: s.DockerParams,
|
|||
|
// ExpertMode: s.ExpertMode,
|
|||
|
// ExpertModeContent: s.ExpertModeContent,
|
|||
|
//})
|
|||
|
return dl
|
|||
|
}
|
|||
|
|
|||
|
type DeviceLibrarySearchQueryRequest struct {
|
|||
|
BaseSearchConditionQuery `schema:",inline"`
|
|||
|
DockerConfigId string `form:"docker_config_id" json:"docker_config_id"`
|
|||
|
IsInternal string `form:"is_internal" json:"is_internal"`
|
|||
|
ClassifyId int `form:"classify_id" json:"classify_id"`
|
|||
|
DockerRepoName string `form:"docker_repo_name" json:"docker_repo_name"`
|
|||
|
NameAliasLike string `form:"name_alias_like" json:"name_alias_like"`
|
|||
|
DownloadStatus string `form:"download_status" json:"download_status"`
|
|||
|
DriverType int `form:"driver_type" json:"driver_type" binding:"omitempty,oneof=1 2"` // 驱动库类型,1:驱动,2:三方应用
|
|||
|
NoInIds string // 约定,没有from的为 内置查询条件
|
|||
|
ImageIds string // 内置条件
|
|||
|
NoInImageIds string // 内置条件
|
|||
|
}
|
|||
|
|
|||
|
type DeviceLibraryResponse struct {
|
|||
|
Id string `json:"id"`
|
|||
|
Name string `json:"name"`
|
|||
|
//Alias string `json:"alias"`
|
|||
|
Description string `json:"description"`
|
|||
|
//Manufacturer string `json:"manufacturer"`
|
|||
|
Protocol string `json:"protocol"`
|
|||
|
Version string `json:"version"`
|
|||
|
ContainerName string `json:"container_name"`
|
|||
|
//ConfigFile string `json:"config_file"`
|
|||
|
DockerConfigId string `json:"docker_config_id"`
|
|||
|
DockerRepoName string `json:"docker_repo_name"`
|
|||
|
OperateStatus string `json:"operate_status"`
|
|||
|
IsInternal bool `json:"is_internal"`
|
|||
|
Manual string `json:"manual"`
|
|||
|
Icon string `json:"icon"`
|
|||
|
ClassifyId int `json:"classify_id"`
|
|||
|
Created int64 `json:"created"`
|
|||
|
Language string `json:"language"`
|
|||
|
SupportVersions []DeviceLibrarySupportVersionSimple `json:"support_versions"` // 用于前端展示可供下载/更新的版本号 key:value == 版本号:配置文件
|
|||
|
}
|
|||
|
|
|||
|
func DeviceLibraryResponseFromModel(dl models.DeviceLibrary) DeviceLibraryResponse {
|
|||
|
// 如果docker镜像id为空,那么返回给前端的版本为 `-`
|
|||
|
if dl.DockerImageId == "" {
|
|||
|
dl.Version = "-"
|
|||
|
}
|
|||
|
//if dl.ConfigFile != "" {
|
|||
|
// dl.ConfigFile = path.Base(dl.ConfigFile)
|
|||
|
//}
|
|||
|
|
|||
|
return DeviceLibraryResponse{
|
|||
|
Id: dl.Id,
|
|||
|
Name: dl.Name,
|
|||
|
Description: dl.Description,
|
|||
|
Protocol: dl.Protocol,
|
|||
|
Version: dl.Version,
|
|||
|
ContainerName: dl.ContainerName,
|
|||
|
//ConfigFile: dl.ConfigFile,
|
|||
|
IsInternal: dl.IsInternal,
|
|||
|
DockerConfigId: dl.DockerConfigId,
|
|||
|
DockerRepoName: dl.DockerRepoName,
|
|||
|
OperateStatus: dl.OperateStatus,
|
|||
|
Icon: dl.Icon,
|
|||
|
Manual: dl.Manual,
|
|||
|
ClassifyId: dl.ClassifyId,
|
|||
|
Created: dl.Created,
|
|||
|
Language: dl.Language,
|
|||
|
SupportVersions: DeviceLibrarySupportVersionSimpleFromModel(dl.SupportVersions),
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
type DeviceLibraryUpgradeRequest struct {
|
|||
|
Id string `json:"id" binding:"required"`
|
|||
|
Version string `json:"version" binding:"required"`
|
|||
|
}
|
|||
|
|
|||
|
type DeviceLibraryUpgradeResponse struct {
|
|||
|
Id string `json:"id"`
|
|||
|
Version string `json:"version"`
|
|||
|
OperateStatus string `json:"operate_status"`
|
|||
|
}
|
|||
|
|
|||
|
func GetLibrarySimpleBaseConfig() string {
|
|||
|
return `{"deviceServer": {},"deviceProtocols": {},"deviceDpAttrs": []}`
|
|||
|
}
|
|||
|
|
|||
|
type UpdateDeviceLibrary struct {
|
|||
|
Id string `json:"id" binding:"required"`
|
|||
|
Name *string `json:"name"`
|
|||
|
Description *string `json:"description"`
|
|||
|
DockerConfigId *string `json:"docker_config_id"`
|
|||
|
Protocol *string `json:"protocol"`
|
|||
|
Language *string `json:"language"`
|
|||
|
Manual *string `json:"manual"`
|
|||
|
Icon *string `json:"icon"`
|
|||
|
}
|
|||
|
|
|||
|
func ReplaceDeviceLibraryModelFieldsWithDTO(deviceLibrary *models.DeviceLibrary, patch UpdateDeviceLibrary) {
|
|||
|
if patch.Name != nil {
|
|||
|
deviceLibrary.Name = *patch.Name
|
|||
|
}
|
|||
|
|
|||
|
if patch.DockerConfigId != nil {
|
|||
|
deviceLibrary.DockerConfigId = *patch.DockerConfigId
|
|||
|
}
|
|||
|
|
|||
|
if patch.Description != nil {
|
|||
|
deviceLibrary.Description = *patch.Description
|
|||
|
}
|
|||
|
|
|||
|
if patch.Protocol != nil {
|
|||
|
deviceLibrary.Protocol = *patch.Protocol
|
|||
|
}
|
|||
|
|
|||
|
if patch.Language != nil {
|
|||
|
deviceLibrary.Language = *patch.Language
|
|||
|
}
|
|||
|
|
|||
|
if patch.Manual != nil {
|
|||
|
deviceLibrary.Manual = *patch.Manual
|
|||
|
}
|
|||
|
if patch.Icon != nil {
|
|||
|
deviceLibrary.Icon = *patch.Icon
|
|||
|
}
|
|||
|
}
|