using Furniture.Bff.Application.Grpc; using Furniture.Bff.Contracts.Api; namespace Furniture.Bff.Application.Adapters; /// /// Default adapter implementation for furniture edge gRPC contract translation. /// public sealed class FurnitureAvailabilityEdgeGrpcContractAdapter : IFurnitureAvailabilityEdgeGrpcContractAdapter { /// public GetFurnitureAvailabilityEdgeGrpcContract ToGrpc(GetFurnitureAvailabilityApiRequest request) { return new GetFurnitureAvailabilityEdgeGrpcContract( request.FurnitureId, ResolveCorrelationId(request.CorrelationId)); } /// 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}"; } }