iot_server/internal/dtos/base.go

71 lines
2.2 KiB
Go

//
// Copyright (C) 2020 IOTech Ltd
//
// SPDX-License-Identifier: Apache-2.0
package dtos
import (
"github.com/google/uuid"
"github.com/winc-link/hummingbird/internal/pkg/constants"
//"gitlab.com/tedge/edgex/internal/pkg/constants"
)
// Request defines the base content for request DTOs (data transfer objects).
// This object and its properties correspond to the BaseRequest object in the APIv2 specification:
// https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/core-data/2.x#/BaseRequest
type BaseRequest struct {
Versionable `json:",inline"`
RequestId string `json:"requestId" validate:"len=0|uuid"`
}
func NewBaseRequest() BaseRequest {
return BaseRequest{
Versionable: NewVersionable(),
RequestId: uuid.NewString(),
}
}
// BaseResponse defines the base content for response DTOs (data transfer objects).
// This object and its properties correspond to the BaseResponse object in the APIv2 specification:
// https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/core-data/2.x#/BaseResponse
type BaseResponse struct {
Versionable `json:",inline"`
RequestId string `json:"requestId"`
Message interface{} `json:"message,omitempty"`
StatusCode int `json:"statusCode"`
}
// Versionable shows the API version in DTOs
type Versionable struct {
ApiVersion string `json:"apiVersion"`
}
// BaseWithIdResponse defines the base content for response DTOs (data transfer objects).
// This object and its properties correspond to the BaseWithIdResponse object in the APIv2 specification:
// https://app.swaggerhub.com/apis-docs/EdgeXFoundry1/core-data/2.x#/BaseWithIdResponse
type BaseWithIdResponse struct {
BaseResponse `json:",inline"`
Id string `json:"id"`
}
func NewBaseResponse(requestId string, message string, statusCode int) BaseResponse {
return BaseResponse{
Versionable: NewVersionable(),
RequestId: requestId,
Message: message,
StatusCode: statusCode,
}
}
func NewVersionable() Versionable {
return Versionable{ApiVersion: constants.ApiVersion}
}
func NewBaseWithIdResponse(requestId string, message string, statusCode int, id string) BaseWithIdResponse {
return BaseWithIdResponse{
BaseResponse: NewBaseResponse(requestId, message, statusCode),
Id: id,
}
}