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
|
||
}
|
||
}
|