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  }