src.dualinventive.com/go/assets-service/grpc/mappings.go

71 lines
1.7 KiB
Go

package grpc
import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"src.dualinventive.com/go/assets-service/internal/assets"
"src.dualinventive.com/go/assets-service/internal/domain"
)
func mapAsset(asset *domain.Asset) *Asset {
return &Asset{
AssetID: uint64(asset.ID),
AssetUID: asset.UID,
AssetTypeCode: asset.TypeCode,
AssetSerialNr: asset.SerialNr,
}
}
func mapAssets(assets []domain.Asset) []*Asset {
if assets == nil {
return nil
}
assetslist := []*Asset{}
for _, asset := range assets {
assetslist = append(assetslist, &Asset{
AssetID: uint64(asset.ID),
AssetUID: asset.UID,
AssetTypeCode: asset.TypeCode,
AssetSerialNr: asset.SerialNr,
})
}
return assetslist
}
func mapSortCol(sortcol GetAssetsRequest_SortCol) domain.SortCol {
switch sortcol {
case GetAssetsRequest_ID_ASC:
return domain.SortColIDAsc
case GetAssetsRequest_ID_DESC:
return domain.SortColIDDesc
case GetAssetsRequest_UID_ASC:
return domain.SortColUIDAsc
case GetAssetsRequest_UID_DESC:
return domain.SortColUIDDesc
case GetAssetsRequest_SERIALNR_ASC:
return domain.SortColSerialNrAsc
case GetAssetsRequest_SERIALNR_DESC:
return domain.SortColSerialNrDesc
default:
return domain.SortColIDAsc
}
}
func mapError(err error) error {
switch err.(type) {
case *assets.ErrUnauthorized:
return status.Error(codes.Unauthenticated, err.Error())
case *assets.ErrAuthFailed:
return status.Error(codes.Internal, err.Error())
case *assets.ErrAssetNotFound:
return status.Error(codes.NotFound, err.Error())
case *assets.ErrAssetRepositoryErr:
return status.Error(codes.Internal, err.Error())
default:
return status.Error(codes.Internal, err.Error())
}
}