furniture-dal/src/Furniture.DAL/Adapters/FurnitureDalGrpcContractAdapter.cs
2026-02-22 18:27:50 -06:00

41 lines
1.4 KiB
C#

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