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