37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using Furniture.Bff.Application.Grpc;
|
|
using Furniture.Bff.Contracts.Api;
|
|
|
|
namespace Furniture.Bff.Application.Adapters;
|
|
|
|
/// <summary>
|
|
/// Default adapter implementation for furniture edge gRPC contract translation.
|
|
/// </summary>
|
|
public sealed class FurnitureAvailabilityEdgeGrpcContractAdapter : IFurnitureAvailabilityEdgeGrpcContractAdapter
|
|
{
|
|
/// <inheritdoc />
|
|
public GetFurnitureAvailabilityEdgeGrpcContract ToGrpc(GetFurnitureAvailabilityApiRequest request)
|
|
{
|
|
return new GetFurnitureAvailabilityEdgeGrpcContract(
|
|
request.FurnitureId,
|
|
ResolveCorrelationId(request.CorrelationId));
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public GetFurnitureAvailabilityApiRequest FromGrpc(GetFurnitureAvailabilityEdgeGrpcContract contract)
|
|
{
|
|
return new GetFurnitureAvailabilityApiRequest(
|
|
contract.FurnitureId,
|
|
ResolveCorrelationId(contract.CorrelationId));
|
|
}
|
|
|
|
private static string ResolveCorrelationId(string correlationId)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(correlationId))
|
|
{
|
|
return correlationId;
|
|
}
|
|
|
|
return $"corr-{Guid.NewGuid():N}";
|
|
}
|
|
}
|