344 lines
12 KiB
Go
344 lines
12 KiB
Go
package dtos
|
||
|
||
import (
|
||
"github.com/winc-link/hummingbird/internal/models"
|
||
"github.com/winc-link/hummingbird/internal/pkg/constants"
|
||
|
||
//"gitlab.com/tedge/edgex/internal/models"
|
||
//devicelibraryProto "gitlab.com/tedge/edgex/proto/devicelibrary"
|
||
//deviceserviceProto "gitlab.com/tedge/edgex/proto/deviceservice"
|
||
"gopkg.in/yaml.v3"
|
||
)
|
||
|
||
type DeviceService struct {
|
||
Id string `json:"id,omitempty"`
|
||
Name string `json:"name"`
|
||
Created int64 `json:"created,omitempty"`
|
||
Modified int64 `json:"modified,omitempty"`
|
||
BaseAddress string `json:"baseAddress"`
|
||
DeviceLibraryId string `json:"deviceLibraryId"`
|
||
Config map[string]interface{} `json:"config"`
|
||
DockerContainerId string `json:"dockerContainerId"`
|
||
ExpertMode bool `json:"isExpertMode"`
|
||
ExpertModeContent string `json:"expertModeContent"`
|
||
DockerParamsSwitch bool `json:"dockerParamsSwitch"`
|
||
DockerParams string `json:"dockerParams"`
|
||
ContainerName string `json:"container_name"`
|
||
}
|
||
|
||
// 启动实例时对应的配置
|
||
type RunServiceCfg struct {
|
||
ImageRepo string
|
||
RunConfig string
|
||
DockerMountDevices []string
|
||
DockerParams string
|
||
DriverName string // 驱动名
|
||
}
|
||
|
||
func DeviceServiceFromModel(ds models.DeviceService) DeviceService {
|
||
var dto DeviceService
|
||
dto.Id = ds.Id
|
||
dto.Name = ds.Name
|
||
dto.BaseAddress = ds.BaseAddress
|
||
dto.DeviceLibraryId = ds.DeviceLibraryId
|
||
dto.Config = ds.Config
|
||
dto.DockerContainerId = ds.DockerContainerId
|
||
dto.ExpertMode = ds.ExpertMode
|
||
dto.ExpertModeContent = ds.ExpertModeContent
|
||
dto.DockerParamsSwitch = ds.DockerParamsSwitch
|
||
dto.DockerParams = ds.DockerParams
|
||
dto.ContainerName = ds.ContainerName
|
||
return dto
|
||
}
|
||
|
||
//func FromDeviceServiceModelToRPC(mds models.DeviceService) *deviceserviceProto.DeviceService {
|
||
// byteConfig, _ := json.Marshal(mds.Config)
|
||
// var ds deviceserviceProto.DeviceService
|
||
// ds.Id = mds.Id
|
||
// ds.Name = mds.Name
|
||
// ds.BaseAddress = mds.BaseAddress
|
||
// ds.DeviceLibraryId = mds.DeviceLibraryId
|
||
// ds.DockerContainerId = mds.DockerContainerId
|
||
// ds.Config = byteConfig
|
||
// ds.ExpertMode = mds.ExpertMode
|
||
// ds.ExpertModeContent = mds.ExpertModeContent
|
||
// ds.DockerParamsSwitch = mds.DockerParamsSwitch
|
||
// ds.DockerParams = mds.DockerParams
|
||
// ds.LogLevel = int64(mds.LogLevel)
|
||
// ds.RunStatus = int32(mds.RunStatus)
|
||
// ds.ImageExist = mds.ImageExist
|
||
// return &ds
|
||
//}
|
||
|
||
//func FromDeviceServiceRpcToModel(ds *deviceserviceProto.DeviceService) models.DeviceService {
|
||
// var config map[string]interface{}
|
||
// if ds.Config != nil {
|
||
// _ = json.Unmarshal(ds.Config, &config)
|
||
// }
|
||
//
|
||
// var mds models.DeviceService
|
||
// mds.Id = ds.Id
|
||
// mds.Name = ds.Name
|
||
// mds.BaseAddress = ds.BaseAddress
|
||
// mds.DeviceLibraryId = ds.DeviceLibraryId
|
||
// mds.DockerContainerId = ds.DockerContainerId
|
||
// mds.RunStatus = int(ds.RunStatus)
|
||
// mds.Config = config
|
||
// mds.ExpertMode = ds.ExpertMode
|
||
// mds.ExpertModeContent = ds.ExpertModeContent
|
||
// mds.DockerParamsSwitch = ds.DockerParamsSwitch
|
||
// mds.DockerParams = ds.DockerParams
|
||
// mds.ImageExist = ds.ImageExist
|
||
// mds.DriverType = int(ds.DriverType)
|
||
// return mds
|
||
//}
|
||
|
||
type DeviceServiceAddRequest struct {
|
||
Id string `json:"id,omitempty" binding:"omitempty,t-special-char"`
|
||
Name string `json:"name"`
|
||
DeviceLibraryId string `json:"deviceLibraryId" binding:"required"`
|
||
Config map[string]interface{} `json:"config" binding:"required"`
|
||
ExpertMode bool `json:"expertMode"`
|
||
ExpertModeContent string `json:"expertModeContent"`
|
||
DockerParamsSwitch bool `json:"dockerParamsSwitch"`
|
||
DockerParams string `json:"dockerParams"`
|
||
DriverType int `json:"driverType" binding:"omitempty,oneof=1 2"` //驱动库类型,1:驱动,2:三方应用
|
||
}
|
||
|
||
//func FromDeviceServiceAddToRpc(req DeviceServiceAddRequest) *deviceserviceProto.DeviceService {
|
||
// byteConfig, _ := json.Marshal(req.Config)
|
||
// return &deviceserviceProto.DeviceService{
|
||
// Id: req.Id,
|
||
// Name: req.Name,
|
||
// DeviceLibraryId: req.DeviceLibraryId,
|
||
// Config: byteConfig,
|
||
// ExpertMode: req.ExpertMode,
|
||
// ExpertModeContent: req.ExpertModeContent,
|
||
// DockerParamsSwitch: req.DockerParamsSwitch,
|
||
// DockerParams: req.DockerParams,
|
||
// DriverType: int32(req.DriverType),
|
||
// }
|
||
//}
|
||
|
||
func DeviceServiceFromDeviceServiceAddRequest(ds DeviceServiceAddRequest) models.DeviceService {
|
||
var mds models.DeviceService
|
||
mds.Id = ds.Id
|
||
mds.Name = ds.Name
|
||
mds.Config = ds.Config
|
||
mds.DeviceLibraryId = ds.DeviceLibraryId
|
||
mds.ExpertMode = ds.ExpertMode
|
||
mds.ExpertModeContent = ds.ExpertModeContent
|
||
mds.DockerParamsSwitch = ds.DockerParamsSwitch
|
||
mds.DockerParams = ds.DockerParams
|
||
mds.DriverType = ds.DriverType
|
||
return mds
|
||
}
|
||
|
||
type DeviceServiceUpdateRequest struct {
|
||
Id string `json:"id" binding:"required"`
|
||
DeviceLibraryId *string `json:"deviceLibraryId"`
|
||
Name *string `json:"name"`
|
||
Config *map[string]interface{} `json:"config"`
|
||
ExpertMode *bool `json:"expertMode"`
|
||
ExpertModeContent *string `json:"expertModeContent"`
|
||
DockerParamsSwitch *bool `json:"docker_params_switch"`
|
||
DockerParams *string `json:"docker_params"`
|
||
Platform constants.IotPlatform `json:"platform"`
|
||
//IsIgnoreRunStatus bool
|
||
}
|
||
|
||
//func FromRpcToUpdateDeviceService(rpc *deviceserviceProto.UpdateDeviceService) DeviceServiceUpdateRequest {
|
||
// var config map[string]interface{}
|
||
// if rpc.Config != nil {
|
||
// _ = json.Unmarshal(rpc.Config, &config)
|
||
// }
|
||
// return DeviceServiceUpdateRequest{
|
||
// Id: rpc.Id,
|
||
// Name: rpc.Name,
|
||
// DeviceLibraryId: rpc.DeviceLibraryId,
|
||
// Config: &config,
|
||
// ExpertMode: rpc.ExpertMode,
|
||
// ExpertModeContent: rpc.ExpertModeContent,
|
||
// DockerParamsSwitch: rpc.DockerParamsSwitch,
|
||
// DockerParams: rpc.DockerParams,
|
||
// }
|
||
//}
|
||
|
||
type UpdateDeviceServiceRunStatusRequest struct {
|
||
Id string `json:"id"`
|
||
RunStatus int `json:"run_status" binding:"required,oneof=1 2"`
|
||
}
|
||
|
||
type DeviceServiceRunLogRequest struct {
|
||
Id string `json:"id"`
|
||
Operate int `json:"operate" binding:"required,oneof=1 2"`
|
||
}
|
||
|
||
type DeviceServiceDeleteRequest struct {
|
||
Id string `json:"id" binding:"required"`
|
||
}
|
||
|
||
//func FromUpdateDeviceServiceRunStatusToRpc(req UpdateDeviceServiceRunStatusRequest) *deviceserviceProto.UpdateDeviceServiceRunStatusRequest {
|
||
// return &deviceserviceProto.UpdateDeviceServiceRunStatusRequest{
|
||
// Id: req.Id,
|
||
// RunStatus: int32(req.RunStatus),
|
||
// }
|
||
//}
|
||
//
|
||
//func FromDeviceServiceSearchQueryRequestToRpc(req DeviceServiceSearchQueryRequest) *deviceserviceProto.DeviceServiceSearchRequest {
|
||
// return &deviceserviceProto.DeviceServiceSearchRequest{
|
||
// BaseSearchConditionQuery: FromBaseSearchConditionQueryToRpc(req.BaseSearchConditionQuery),
|
||
// DeviceLibraryId: req.DeviceLibraryId,
|
||
// DriverType: int32(req.DriverType),
|
||
// }
|
||
//}
|
||
|
||
//func FromRpcToUpdateDeviceServiceRunStatus(rpc *deviceserviceProto.UpdateDeviceServiceRunStatusRequest) UpdateDeviceServiceRunStatusRequest {
|
||
// return UpdateDeviceServiceRunStatusRequest{
|
||
// Id: rpc.Id,
|
||
// RunStatus: int(rpc.RunStatus),
|
||
// }
|
||
//}
|
||
|
||
func ReplaceDeviceServiceModelFieldsWithDTO(ds *models.DeviceService, patch DeviceServiceUpdateRequest) {
|
||
if patch.Config != nil {
|
||
ds.Config = *patch.Config
|
||
}
|
||
if patch.DeviceLibraryId != nil {
|
||
ds.DeviceLibraryId = *patch.DeviceLibraryId
|
||
}
|
||
if patch.ExpertMode != nil {
|
||
ds.ExpertMode = *patch.ExpertMode
|
||
}
|
||
if patch.ExpertModeContent != nil {
|
||
ds.ExpertModeContent = *patch.ExpertModeContent
|
||
}
|
||
if patch.DockerParamsSwitch != nil {
|
||
ds.DockerParamsSwitch = *patch.DockerParamsSwitch
|
||
}
|
||
if patch.DockerParams != nil {
|
||
ds.DockerParams = *patch.DockerParams
|
||
}
|
||
if patch.Platform != "" {
|
||
ds.Platform = patch.Platform
|
||
}
|
||
}
|
||
|
||
type DeviceServiceSearchQueryRequest struct {
|
||
BaseSearchConditionQuery `schema:",inline"`
|
||
ProductId string `form:"productId"`
|
||
CloudProductId string `form:"cloudProductId"`
|
||
DeviceLibraryId string `form:"deviceLibraryId"` // 驱动库ID
|
||
DeviceLibraryIds string `form:"deviceLibraryIds"` // 驱动库IDs
|
||
Platform string `form:"platform"`
|
||
DriverType int `form:"driver_type" binding:"omitempty,oneof=1 2"` //驱动库类型,1:驱动,2:三方应用
|
||
}
|
||
|
||
//func ToDeviceServiceSearchQueryRequestDTO(req *deviceserviceProto.DeviceServiceSearchRequest) DeviceServiceSearchQueryRequest {
|
||
//
|
||
// if req.BaseSearchConditionQuery == nil {
|
||
// return DeviceServiceSearchQueryRequest{
|
||
// DeviceLibraryId: req.DeviceLibraryId,
|
||
// DriverType: int(req.DriverType),
|
||
// }
|
||
// } else {
|
||
// return DeviceServiceSearchQueryRequest{
|
||
// BaseSearchConditionQuery: ToBaseSearchConditionQueryDTO(req.BaseSearchConditionQuery),
|
||
// DeviceLibraryId: req.DeviceLibraryId,
|
||
// DriverType: int(req.DriverType),
|
||
// }
|
||
// }
|
||
//}
|
||
|
||
//func FromDeviceServiceUpdateToRpc(req DeviceServiceUpdateRequest) *deviceserviceProto.UpdateDeviceService {
|
||
// var byteConfig []byte
|
||
// if req.Config != nil {
|
||
// byteConfig, _ = json.Marshal(&req.Config)
|
||
// } else {
|
||
// byteConfig = nil
|
||
// }
|
||
//
|
||
// return &deviceserviceProto.UpdateDeviceService{
|
||
// Id: req.Id,
|
||
// Name: req.Name,
|
||
// DeviceLibraryId: req.DeviceLibraryId,
|
||
// Config: byteConfig,
|
||
// ExpertMode: req.ExpertMode,
|
||
// ExpertModeContent: req.ExpertModeContent,
|
||
// DockerParamsSwitch: req.DockerParamsSwitch,
|
||
// DockerParams: req.DockerParams,
|
||
// }
|
||
//}
|
||
|
||
/************** Response **************/
|
||
|
||
type DeviceServiceResponse struct {
|
||
Id string `json:"id"`
|
||
Name string `json:"name"`
|
||
DeviceLibrary DeviceLibraryResponse `json:"deviceLibrary"`
|
||
//Version string `json:"version"`
|
||
RunStatus int `json:"runStatus"`
|
||
Config interface{} `json:"config"`
|
||
ExpertMode bool `json:"expertMode"`
|
||
ExpertModeContent string `json:"expertModeContent"`
|
||
DockerParamsSwitch bool `json:"dockerParamsSwitch"`
|
||
DockerParams string `json:"dockerParams"`
|
||
CreateAt int64 `json:"create_at"`
|
||
ImageExist bool `json:"imageExist"`
|
||
Platform string `json:"platform"`
|
||
}
|
||
|
||
func DeviceServiceResponseFromModel(ds models.DeviceService, dl models.DeviceLibrary) DeviceServiceResponse {
|
||
return DeviceServiceResponse{
|
||
Id: ds.Id,
|
||
Name: ds.Name,
|
||
//Version: DeviceLibraryResponseFromModel(dl).Version,
|
||
DeviceLibrary: DeviceLibraryResponseFromModel(dl),
|
||
RunStatus: ds.RunStatus,
|
||
Config: ds.Config,
|
||
ExpertMode: ds.ExpertMode,
|
||
ExpertModeContent: ds.ExpertModeContent,
|
||
DockerParamsSwitch: ds.DockerParamsSwitch,
|
||
DockerParams: ds.DockerParams,
|
||
ImageExist: ds.ImageExist,
|
||
CreateAt: ds.Created,
|
||
Platform: string(ds.Platform),
|
||
}
|
||
}
|
||
|
||
//func FromDeviceServiceRpcToResponse(ds *deviceserviceProto.DeviceService, dl *devicelibraryProto.DeviceLibrary) DeviceServiceResponse {
|
||
// var cfg map[string]interface{}
|
||
// _ = json.Unmarshal(ds.Config, &cfg)
|
||
// return DeviceServiceResponse{
|
||
// Id: ds.Id,
|
||
// Name: ds.Name,
|
||
// RunStatus: int(ds.RunStatus),
|
||
// DeviceLibrary: FromDeviceLibraryRpcToResponse(dl),
|
||
// Config: cfg,
|
||
// ExpertMode: ds.ExpertMode,
|
||
// ExpertModeContent: ds.ExpertModeContent,
|
||
// DockerParamsSwitch: ds.DockerParamsSwitch,
|
||
// DockerParams: ds.DockerParams,
|
||
// ImageExist: ds.ImageExist,
|
||
// }
|
||
//}
|
||
|
||
func FromYamlStrToMap(yamlStr string) (m map[string]interface{}, err error) {
|
||
err = yaml.Unmarshal([]byte(yamlStr), &m)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return m, nil
|
||
}
|
||
|
||
type UpdateDeviceServiceRunStatusResponse struct {
|
||
Id string `json:"id"`
|
||
RunStatus int `json:"run_status"`
|
||
}
|
||
|
||
type UpdateServiceLogLevelConfigRequest struct {
|
||
Id string `json:"id"` // 驱动或应用ID
|
||
LogLevel int64 `json:"logLevel"`
|
||
}
|