using Core.Blueprint.Common.Runtime; using Furniture.DAL.Contracts; using Furniture.DAL.Grpc; namespace Furniture.DAL.Adapters; /// /// Default adapter implementation for furniture DAL gRPC contract translation. /// public sealed class FurnitureDalGrpcContractAdapter(IBlueprintSystemClock clock) : IFurnitureDalGrpcContractAdapter { /// public FurnitureAvailabilityDalGrpcContract ToGrpcAvailabilityRequest(FurnitureAvailabilityLookupRequest request) { return new FurnitureAvailabilityDalGrpcContract(request.FurnitureId); } /// public FurnitureAvailabilityLookupRequest FromGrpcAvailabilityRequest(FurnitureAvailabilityDalGrpcContract contract) { return new FurnitureAvailabilityLookupRequest(CreateEnvelope(), contract.FurnitureId); } /// public CatalogProductDalGrpcContract ToGrpcCatalogRequest(CatalogProductLookupRequest request) { return new CatalogProductDalGrpcContract(request.ProductId); } /// public CatalogProductLookupRequest FromGrpcCatalogRequest(CatalogProductDalGrpcContract contract) { return new CatalogProductLookupRequest(CreateEnvelope(), contract.ProductId); } private FurnitureDalContractEnvelope CreateEnvelope() { return new FurnitureDalContractEnvelope("1.0.0", $"corr-{clock.UtcNow:yyyyMMddHHmmssfff}"); } }