290 lines
10 KiB
Go
290 lines
10 KiB
Go
/*******************************************************************************
|
|
* Copyright 2017 Dell Inc.
|
|
* Copyright (c) 2019 Intel Corporation
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
|
* in compliance with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
* or implied. See the License for the specific language governing permissions and limitations under
|
|
* the License.
|
|
*******************************************************************************/
|
|
package dtos
|
|
|
|
import (
|
|
"github.com/winc-link/hummingbird/internal/models"
|
|
"github.com/winc-link/hummingbird/internal/pkg/constants"
|
|
)
|
|
|
|
type ProductSearchQueryRequest struct {
|
|
BaseSearchConditionQuery `schema:",inline"`
|
|
Platform string `schema:"platform,omitempty"`
|
|
Name string `schema:"name,omitempty"`
|
|
ProductId string `schema:"product_id,omitempty"`
|
|
CloudInstanceId string `schema:"cloud_instance_id,omitempty"`
|
|
//DeviceLibraryId string `schema:"deviceLibraryId,omitempty"`
|
|
}
|
|
|
|
type ProductSearchQueryResponse struct {
|
|
Id string `json:"id"`
|
|
ProductId string `json:"product_id"`
|
|
Name string `json:"name"`
|
|
Key string `json:"key"`
|
|
NodeType string `json:"node_type"`
|
|
Platform string `json:"platform"`
|
|
Status string `json:"status"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
CategoryName string `json:"category_name"`
|
|
}
|
|
|
|
func ProductResponseFromModel(p models.Product) ProductSearchQueryResponse {
|
|
return ProductSearchQueryResponse{
|
|
Id: p.Id,
|
|
ProductId: p.CloudProductId,
|
|
Name: p.Name,
|
|
Key: p.Key,
|
|
NodeType: string(p.NodeType),
|
|
Platform: string(p.Platform),
|
|
Status: string(p.Status),
|
|
CreatedAt: p.Created,
|
|
}
|
|
}
|
|
|
|
type ProductSearchByIdResponse struct {
|
|
Id string `json:"id"`
|
|
Name string `json:"name"`
|
|
Key string `json:"key"`
|
|
CloudProductId string `json:"cloud_product_id"`
|
|
CloudInstanceId string `json:"cloud_instance_id"`
|
|
Platform string `json:"platform"`
|
|
Protocol string `json:"protocol"`
|
|
NodeType string `json:"node_type"`
|
|
NetType string `json:"net_type"`
|
|
DataFormat string `json:"data_format"`
|
|
Factory string `json:"factory"`
|
|
Description string `json:"description"`
|
|
Status string `json:"status"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
LastSyncTime int64 `json:"last_sync_time"`
|
|
Properties interface{} `json:"properties"`
|
|
Events interface{} `json:"events"`
|
|
Actions interface{} `json:"actions"`
|
|
}
|
|
|
|
func ProductSearchByIdFromModel(p models.Product) ProductSearchByIdResponse {
|
|
return ProductSearchByIdResponse{
|
|
Id: p.Id,
|
|
Name: p.Name,
|
|
CloudProductId: p.CloudProductId,
|
|
CloudInstanceId: p.CloudInstanceId,
|
|
Platform: string(p.Platform),
|
|
Protocol: p.Protocol,
|
|
Key: p.Key,
|
|
NodeType: string(p.NodeType),
|
|
NetType: string(p.NetType),
|
|
DataFormat: p.DataFormat,
|
|
Factory: p.Factory,
|
|
Description: p.Description,
|
|
CreatedAt: p.Created,
|
|
LastSyncTime: p.LastSyncTime,
|
|
Status: string(p.Status),
|
|
Properties: p.Properties,
|
|
Events: p.Events,
|
|
Actions: p.Actions,
|
|
}
|
|
}
|
|
|
|
type ProductSearchByIdOpenApiResponse struct {
|
|
Id string `json:"id"`
|
|
Name string `json:"name"`
|
|
Key string `json:"key"`
|
|
Platform string `json:"platform"`
|
|
Protocol string `json:"protocol"`
|
|
NodeType string `json:"node_type"`
|
|
NetType string `json:"net_type"`
|
|
DataFormat string `json:"data_format"`
|
|
Factory string `json:"factory"`
|
|
Status string `json:"status"`
|
|
Description string `json:"description"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
//Properties []OpenApiProperties `json:"properties"`
|
|
//Events []OpenApiEvents `json:"events"`
|
|
//Actions []OpenApiActions `json:"services"`
|
|
}
|
|
|
|
type OpenApiProperties struct {
|
|
Id string `json:"id"`
|
|
ProductId string `json:"product_id"` // 产品ID
|
|
Name string `json:"name"` // 属性名称
|
|
Code string `json:"code"` // 标识符
|
|
AccessMode string `json:"access_mode"` // 数据传输类型
|
|
Required bool `json:"required"`
|
|
TypeSpec OpenApiTypeSpec `json:"type_spec"` // 数据属性
|
|
Description string `json:"description"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
}
|
|
|
|
type OpenApiEvents struct {
|
|
Id string `json:"id"`
|
|
ProductId string `json:"product_id"`
|
|
Name string `json:"name"` // 功能名称
|
|
Code string `json:"code"` // 标识符
|
|
EventType string `json:"event_type"`
|
|
Required bool `json:"required"`
|
|
OutputParams []OpenApiOutPutParams `json:"output_params"`
|
|
Description string `json:"description"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
}
|
|
|
|
//
|
|
//func (t *OpenApiEvents) TransformModelInPutParams() (inPutParams models.InPutParams) {
|
|
// for _, datum := range t.OutputParams {
|
|
// var inputOutput models.InputOutput
|
|
// inputOutput.Code = datum.Code
|
|
// inputOutput.Name = datum.Name
|
|
// inputOutput.TypeSpec = getThingModelTemplateTypeSpec(string(datum.TypeSpec.Type), datum.TypeSpec.Specs, nil)
|
|
// inPutParams = append(inPutParams, inputOutput)
|
|
// }
|
|
// return
|
|
//}
|
|
|
|
type OpenApiOutPutParams struct {
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
TypeSpec OpenApiTypeSpec `json:"type_spec"`
|
|
}
|
|
|
|
type OpenApiInPutParams struct {
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
TypeSpec OpenApiTypeSpec `json:"type_spec"`
|
|
}
|
|
|
|
type OpenApiActions struct {
|
|
Id string `json:"id"`
|
|
ProductId string `json:"product_id"`
|
|
Name string `json:"name"` // 功能名称
|
|
Code string `json:"code"` // 标识符
|
|
Required bool `json:"required"`
|
|
CallType constants.CallType `json:"call_type"`
|
|
InputParams []OpenApiInPutParams `json:"input_params"` // 输入参数
|
|
OutputParams []OpenApiOutPutParams `json:"output_params"` // 输出参数
|
|
CreatedAt int64 `json:"created_at"`
|
|
Description string `json:"description"`
|
|
}
|
|
|
|
type OpenApiTypeSpec struct {
|
|
Type constants.SpecsType `json:"type,omitempty"`
|
|
Specs string `json:"specs,omitempty"`
|
|
}
|
|
|
|
func ProductSearchByIdOpenApiFromModel(p models.Product) ProductSearchByIdOpenApiResponse {
|
|
return ProductSearchByIdOpenApiResponse{
|
|
Id: p.Id,
|
|
Name: p.Name,
|
|
Key: p.Key,
|
|
Platform: string(p.Platform),
|
|
Protocol: p.Protocol,
|
|
NodeType: string(p.NodeType),
|
|
NetType: string(p.NetType),
|
|
DataFormat: p.DataFormat,
|
|
Factory: p.Factory,
|
|
Status: string(p.Status),
|
|
Description: p.Description,
|
|
CreatedAt: p.Created,
|
|
}
|
|
}
|
|
|
|
type ProductSearchOpenApiResponse struct {
|
|
Id string `json:"id"`
|
|
Name string `json:"name"`
|
|
Key string `json:"key"`
|
|
Platform string `json:"platform"`
|
|
Protocol string `json:"protocol"`
|
|
NodeType string `json:"node_type"`
|
|
NetType string `json:"net_type"`
|
|
DataFormat string `json:"data_format"`
|
|
Factory string `json:"factory"`
|
|
Status string `json:"status"`
|
|
Description string `json:"description"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
}
|
|
|
|
func ProductSearchOpenApiFromModel(p models.Product) ProductSearchOpenApiResponse {
|
|
return ProductSearchOpenApiResponse{
|
|
Id: p.Id,
|
|
Name: p.Name,
|
|
Key: p.Key,
|
|
Platform: string(p.Platform),
|
|
Protocol: p.Protocol,
|
|
NodeType: string(p.NodeType),
|
|
NetType: string(p.NetType),
|
|
DataFormat: p.DataFormat,
|
|
Factory: p.Factory,
|
|
Status: string(p.Status),
|
|
Description: p.Description,
|
|
CreatedAt: p.Created,
|
|
}
|
|
}
|
|
|
|
type ProductSyncRequest struct {
|
|
CloudInstanceId string `json:"cloud_instance_id"`
|
|
//Extra struct{
|
|
//
|
|
//} `json:"extra"`
|
|
//Aliyun *struct {
|
|
// ResourceGroupId string `json:"resource_group_id"`
|
|
//} `json:"ali_yun"`
|
|
//HuaweiYun *struct {
|
|
// ProjectId string `json:"project_id"`
|
|
// AppId string `json:"app_id"`
|
|
//} `json:"huawei_yun"`
|
|
}
|
|
|
|
type ProductSyncByIdRequest struct {
|
|
ProductId string `json:"product_id"`
|
|
}
|
|
|
|
type ProductAddRequest struct {
|
|
Name string `json:"name"` //产品名字
|
|
//Platform string `json:"platform"`
|
|
Key string `json:"key"`
|
|
CategoryTemplateId string `json:"category_template_id"` //如果是自定义 id固定传递"1"
|
|
Protocol string `json:"protocol"` //协议
|
|
NodeType string `json:"node_type"` //节点类型
|
|
NetType string `json:"net_type"` //联网模式
|
|
DataFormat string `json:"data_format"` //数据类型
|
|
Factory string `json:"factory"` //厂家
|
|
Description string `json:"description"` //描述
|
|
}
|
|
|
|
type OpenApiAddProductRequest struct {
|
|
Name string `json:"name"` //产品名字
|
|
Protocol string `json:"protocol"` //协议
|
|
NodeType string `json:"node_type"` //节点类型
|
|
NetType string `json:"net_type"` //联网模式
|
|
DataFormat string `json:"data_format"` //数据类型
|
|
Factory string `json:"factory"` //厂家
|
|
Description string `json:"description"` //描述
|
|
//Properties []OpenApiProperties `json:"properties"`
|
|
//Events []OpenApiEvents `json:"events"`
|
|
//Actions []OpenApiActions `json:"services"`
|
|
}
|
|
|
|
type OpenApiUpdateProductRequest struct {
|
|
Id string `json:"id"`
|
|
Name *string `json:"name"` //产品名字
|
|
Protocol *string `json:"protocol"` //协议
|
|
NodeType *string `json:"node_type"` //节点类型
|
|
NetType *string `json:"net_type"` //联网模式
|
|
DataFormat *string `json:"data_format"` //数据类型
|
|
Factory *string `json:"factory"` //厂家
|
|
Description *string `json:"description"` //描述
|
|
//Properties []OpenApiProperties `json:"properties"`
|
|
//Events []OpenApiEvents `json:"events"`
|
|
//Actions []OpenApiActions `json:"services"`
|
|
}
|