dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/dtos/requests/deviceresource.go (about) 1 // 2 // Copyright (C) 2022 IOTech Ltd 3 // 4 // SPDX-License-Identifier: Apache-2.0 5 6 package requests 7 8 import ( 9 "encoding/json" 10 11 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/common" 12 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos" 13 dtoCommon "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/common" 14 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/errors" 15 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/models" 16 ) 17 18 // AddDeviceResourceRequest defines the Request Content for POST DeviceResource DTO. 19 type AddDeviceResourceRequest struct { 20 dtoCommon.BaseRequest `json:",inline"` 21 ProfileName string `json:"profileName" validate:"required,edgex-dto-none-empty-string"` 22 Resource dtos.DeviceResource `json:"resource"` 23 } 24 25 func (request AddDeviceResourceRequest) Validate() error { 26 err := common.Validate(request) 27 return err 28 } 29 30 // UnmarshalJSON implements the Unmarshaler interface for the AddDeviceResourceReques type 31 func (dr *AddDeviceResourceRequest) UnmarshalJSON(b []byte) error { 32 alias := struct { 33 dtoCommon.BaseRequest 34 ProfileName string 35 Resource dtos.DeviceResource 36 }{} 37 38 if err := json.Unmarshal(b, &alias); err != nil { 39 return errors.NewCommonEdgeX(errors.KindContractInvalid, "Failed to unmarshal request body as JSON.", err) 40 } 41 *dr = AddDeviceResourceRequest(alias) 42 43 if err := dr.Validate(); err != nil { 44 return err 45 } 46 47 return nil 48 } 49 50 // UpdateDeviceResourceRequest defines the Request Content for PATCH DeviceResource DTO. 51 type UpdateDeviceResourceRequest struct { 52 dtoCommon.BaseRequest `json:",inline"` 53 ProfileName string `json:"profileName" validate:"required,edgex-dto-none-empty-string"` 54 Resource dtos.UpdateDeviceResource `json:"resource"` 55 } 56 57 func (request UpdateDeviceResourceRequest) Validate() error { 58 err := common.Validate(request) 59 return err 60 } 61 62 // UnmarshalJSON implements the Unmarshaler interface for the UpdateDeviceResourceRequest type 63 func (dr *UpdateDeviceResourceRequest) UnmarshalJSON(b []byte) error { 64 alias := struct { 65 dtoCommon.BaseRequest 66 ProfileName string 67 Resource dtos.UpdateDeviceResource 68 }{} 69 70 if err := json.Unmarshal(b, &alias); err != nil { 71 return errors.NewCommonEdgeX(errors.KindContractInvalid, "Failed to unmarshal request body as JSON.", err) 72 } 73 *dr = UpdateDeviceResourceRequest(alias) 74 75 if err := dr.Validate(); err != nil { 76 return err 77 } 78 79 return nil 80 } 81 82 // ReplaceDeviceResourceModelFieldsWithDTO replace existing DeviceResource's fields with DTO patch 83 func ReplaceDeviceResourceModelFieldsWithDTO(dr *models.DeviceResource, patch dtos.UpdateDeviceResource) { 84 if patch.Description != nil { 85 dr.Description = *patch.Description 86 } 87 if patch.IsHidden != nil { 88 dr.IsHidden = *patch.IsHidden 89 } 90 }