furniture-bff/src/Furniture.Bff.Application/Adapters/FurnitureAvailabilityEdgeGrpcContractAdapter.cs
2026-02-22 19:26:50 -06:00

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}";
}
}