dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/dtos/requests/provisionwatcher.go (about) 1 // 2 // Copyright (C) 2021-2023 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 // AddProvisionWatcherRequest defines the Request Content for POST ProvisionWatcher DTO. 19 type AddProvisionWatcherRequest struct { 20 dtoCommon.BaseRequest `json:",inline"` 21 ProvisionWatcher dtos.ProvisionWatcher `json:"provisionWatcher"` 22 } 23 24 // Validate satisfies the Validator interface 25 func (pw *AddProvisionWatcherRequest) Validate() error { 26 err := common.Validate(pw) 27 return err 28 } 29 30 // UnmarshalJSON implements the Unmarshaler interface for the AddProvisionWatcherRequest type 31 func (pw *AddProvisionWatcherRequest) UnmarshalJSON(b []byte) error { 32 var alias struct { 33 dtoCommon.BaseRequest 34 ProvisionWatcher dtos.ProvisionWatcher 35 } 36 if err := json.Unmarshal(b, &alias); err != nil { 37 return errors.NewCommonEdgeX(errors.KindContractInvalid, "Failed to unmarshal request body as JSON.", err) 38 } 39 40 *pw = AddProvisionWatcherRequest(alias) 41 42 // validate AddDeviceRequest DTO 43 if err := pw.Validate(); err != nil { 44 return err 45 } 46 return nil 47 } 48 49 // AddProvisionWatcherReqToProvisionWatcherModels transforms the AddProvisionWatcherRequest DTO array to the ProvisionWatcher model array 50 func AddProvisionWatcherReqToProvisionWatcherModels(addRequests []AddProvisionWatcherRequest) (ProvisionWatchers []models.ProvisionWatcher) { 51 for _, req := range addRequests { 52 d := dtos.ToProvisionWatcherModel(req.ProvisionWatcher) 53 ProvisionWatchers = append(ProvisionWatchers, d) 54 } 55 return ProvisionWatchers 56 } 57 58 // UpdateProvisionWatcherRequest defines the Request Content for PUT event as pushed DTO. 59 type UpdateProvisionWatcherRequest struct { 60 dtoCommon.BaseRequest `json:",inline"` 61 ProvisionWatcher dtos.UpdateProvisionWatcher `json:"provisionWatcher"` 62 } 63 64 // Validate satisfies the Validator interface 65 func (pw *UpdateProvisionWatcherRequest) Validate() error { 66 err := common.Validate(pw) 67 return err 68 } 69 70 // UnmarshalJSON implements the Unmarshaler interface for the UpdateProvisionWatcherRequest type 71 func (pw *UpdateProvisionWatcherRequest) UnmarshalJSON(b []byte) error { 72 var alias struct { 73 dtoCommon.BaseRequest 74 ProvisionWatcher dtos.UpdateProvisionWatcher 75 } 76 if err := json.Unmarshal(b, &alias); err != nil { 77 return errors.NewCommonEdgeX(errors.KindContractInvalid, "Failed to unmarshal request body as JSON.", err) 78 } 79 80 *pw = UpdateProvisionWatcherRequest(alias) 81 82 // validate UpdateDeviceRequest DTO 83 if err := pw.Validate(); err != nil { 84 return err 85 } 86 return nil 87 } 88 89 // ReplaceProvisionWatcherModelFieldsWithDTO replace existing ProvisionWatcher's fields with DTO patch 90 func ReplaceProvisionWatcherModelFieldsWithDTO(pw *models.ProvisionWatcher, patch dtos.UpdateProvisionWatcher) { 91 if patch.Labels != nil { 92 pw.Labels = patch.Labels 93 } 94 if patch.Identifiers != nil { 95 pw.Identifiers = patch.Identifiers 96 } 97 if patch.BlockingIdentifiers != nil { 98 pw.BlockingIdentifiers = patch.BlockingIdentifiers 99 } 100 if patch.AdminState != nil { 101 pw.AdminState = models.AdminState(*patch.AdminState) 102 } 103 if patch.DiscoveredDevice.ProfileName != nil { 104 pw.DiscoveredDevice.ProfileName = *patch.DiscoveredDevice.ProfileName 105 } 106 if patch.ServiceName != nil { 107 pw.ServiceName = *patch.ServiceName 108 } 109 if patch.DiscoveredDevice.AdminState != nil { 110 pw.DiscoveredDevice.AdminState = models.AdminState(*patch.DiscoveredDevice.AdminState) 111 } 112 if patch.DiscoveredDevice.AutoEvents != nil { 113 pw.DiscoveredDevice.AutoEvents = dtos.ToAutoEventModels(patch.DiscoveredDevice.AutoEvents) 114 } 115 if patch.DiscoveredDevice.Properties != nil { 116 pw.DiscoveredDevice.Properties = patch.DiscoveredDevice.Properties 117 } 118 } 119 120 func NewAddProvisionWatcherRequest(dto dtos.ProvisionWatcher) AddProvisionWatcherRequest { 121 return AddProvisionWatcherRequest{ 122 BaseRequest: dtoCommon.NewBaseRequest(), 123 ProvisionWatcher: dto, 124 } 125 } 126 127 func NewUpdateProvisionWatcherRequest(dto dtos.UpdateProvisionWatcher) UpdateProvisionWatcherRequest { 128 return UpdateProvisionWatcherRequest{ 129 BaseRequest: dtoCommon.NewBaseRequest(), 130 ProvisionWatcher: dto, 131 } 132 }