dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/dtos/requests/deviceservice.go (about)

     1  //
     2  // Copyright (C) 2020-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  // AddDeviceServiceRequest defines the Request Content for POST DeviceService DTO.
    19  type AddDeviceServiceRequest struct {
    20  	dtoCommon.BaseRequest `json:",inline"`
    21  	Service               dtos.DeviceService `json:"service"`
    22  }
    23  
    24  // Validate satisfies the Validator interface
    25  func (ds AddDeviceServiceRequest) Validate() error {
    26  	err := common.Validate(ds)
    27  	return err
    28  }
    29  
    30  // UnmarshalJSON implements the Unmarshaler interface for the AddDeviceServiceRequest type
    31  func (ds *AddDeviceServiceRequest) UnmarshalJSON(b []byte) error {
    32  	var alias struct {
    33  		dtoCommon.BaseRequest
    34  		Service dtos.DeviceService
    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  	*ds = AddDeviceServiceRequest(alias)
    41  
    42  	// validate AddDeviceServiceRequest DTO
    43  	if err := ds.Validate(); err != nil {
    44  		return err
    45  	}
    46  	return nil
    47  }
    48  
    49  // AddDeviceServiceReqToDeviceServiceModels transforms the AddDeviceServiceRequest DTO array to the DeviceService model array
    50  func AddDeviceServiceReqToDeviceServiceModels(addRequests []AddDeviceServiceRequest) (DeviceServices []models.DeviceService) {
    51  	for _, req := range addRequests {
    52  		ds := dtos.ToDeviceServiceModel(req.Service)
    53  		DeviceServices = append(DeviceServices, ds)
    54  	}
    55  	return DeviceServices
    56  }
    57  
    58  // UpdateDeviceServiceRequest defines the Request Content for PUT event as pushed DTO.
    59  type UpdateDeviceServiceRequest struct {
    60  	dtoCommon.BaseRequest `json:",inline"`
    61  	Service               dtos.UpdateDeviceService `json:"service"`
    62  }
    63  
    64  // Validate satisfies the Validator interface
    65  func (ds UpdateDeviceServiceRequest) Validate() error {
    66  	err := common.Validate(ds)
    67  	return err
    68  }
    69  
    70  // UnmarshalJSON implements the Unmarshaler interface for the UpdateDeviceServiceRequest type
    71  func (ds *UpdateDeviceServiceRequest) UnmarshalJSON(b []byte) error {
    72  	var alias struct {
    73  		dtoCommon.BaseRequest
    74  		Service dtos.UpdateDeviceService
    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  	*ds = UpdateDeviceServiceRequest(alias)
    81  
    82  	// validate UpdateDeviceServiceRequest DTO
    83  	if err := ds.Validate(); err != nil {
    84  		return err
    85  	}
    86  	return nil
    87  }
    88  
    89  // ReplaceDeviceServiceModelFieldsWithDTO replace existing DeviceService's fields with DTO patch
    90  func ReplaceDeviceServiceModelFieldsWithDTO(ds *models.DeviceService, patch dtos.UpdateDeviceService) {
    91  	if patch.Description != nil {
    92  		ds.Description = *patch.Description
    93  	}
    94  	if patch.AdminState != nil {
    95  		ds.AdminState = models.AdminState(*patch.AdminState)
    96  	}
    97  	if patch.Labels != nil {
    98  		ds.Labels = patch.Labels
    99  	}
   100  	if patch.BaseAddress != nil {
   101  		ds.BaseAddress = *patch.BaseAddress
   102  	}
   103  }
   104  
   105  func NewAddDeviceServiceRequest(dto dtos.DeviceService) AddDeviceServiceRequest {
   106  	return AddDeviceServiceRequest{
   107  		BaseRequest: dtoCommon.NewBaseRequest(),
   108  		Service:     dto,
   109  	}
   110  }
   111  
   112  func NewUpdateDeviceServiceRequest(dto dtos.UpdateDeviceService) UpdateDeviceServiceRequest {
   113  	return UpdateDeviceServiceRequest{
   114  		BaseRequest: dtoCommon.NewBaseRequest(),
   115  		Service:     dto,
   116  	}
   117  }