From 5dd4c7c2a1cb5f29f078a9c4fa1cdee2859ba04f Mon Sep 17 00:00:00 2001 From: Jesus Navalon Date: Sat, 11 Jul 2026 18:26:22 +0200 Subject: [PATCH] Add ports and service for product affinity functionality --- .../port/incomming/GetAffinityProductsUC.java | 11 ++++++++++ .../outcoming/AffinityProductsIdsPort.java | 4 ++++ .../port/outcoming/ProductDetailsPort.java | 9 +++++++++ .../service/SimilarProductsService.java | 20 +++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 src/main/java/com/example/productaffinity/domain/port/incomming/GetAffinityProductsUC.java create mode 100644 src/main/java/com/example/productaffinity/domain/port/outcoming/AffinityProductsIdsPort.java create mode 100644 src/main/java/com/example/productaffinity/domain/port/outcoming/ProductDetailsPort.java create mode 100644 src/main/java/com/example/productaffinity/domain/service/SimilarProductsService.java diff --git a/src/main/java/com/example/productaffinity/domain/port/incomming/GetAffinityProductsUC.java b/src/main/java/com/example/productaffinity/domain/port/incomming/GetAffinityProductsUC.java new file mode 100644 index 0000000..82fa514 --- /dev/null +++ b/src/main/java/com/example/productaffinity/domain/port/incomming/GetAffinityProductsUC.java @@ -0,0 +1,11 @@ +package com.example.productaffinity.domain.port.incomming; + +import com.example.productaffinity.domain.model.Product; +import reactor.core.publisher.Mono; + +import java.util.List; + +// Input Port for resolving similar products to a requested product +public interface GetAffinityProductsUC { + Mono> getAffinityProducts(String productId); +} diff --git a/src/main/java/com/example/productaffinity/domain/port/outcoming/AffinityProductsIdsPort.java b/src/main/java/com/example/productaffinity/domain/port/outcoming/AffinityProductsIdsPort.java new file mode 100644 index 0000000..5225f71 --- /dev/null +++ b/src/main/java/com/example/productaffinity/domain/port/outcoming/AffinityProductsIdsPort.java @@ -0,0 +1,4 @@ +package com.example.productaffinity.domain.port.outcoming; + +public class AffinityProductsIdsPort { +} diff --git a/src/main/java/com/example/productaffinity/domain/port/outcoming/ProductDetailsPort.java b/src/main/java/com/example/productaffinity/domain/port/outcoming/ProductDetailsPort.java new file mode 100644 index 0000000..2e2fcd8 --- /dev/null +++ b/src/main/java/com/example/productaffinity/domain/port/outcoming/ProductDetailsPort.java @@ -0,0 +1,9 @@ +package com.example.productaffinity.domain.port.outcoming; + +import reactor.core.publisher.Mono; + +import java.util.Collection; + +public interface ProductDetailsPort { + Mono> findAffinityProductIds(String productId); +} diff --git a/src/main/java/com/example/productaffinity/domain/service/SimilarProductsService.java b/src/main/java/com/example/productaffinity/domain/service/SimilarProductsService.java new file mode 100644 index 0000000..f166806 --- /dev/null +++ b/src/main/java/com/example/productaffinity/domain/service/SimilarProductsService.java @@ -0,0 +1,20 @@ +package com.example.productaffinity.domain.service; + +import com.example.productaffinity.domain.model.Product; +import com.example.productaffinity.domain.port.incomming.GetAffinityProductsUC; +import org.springframework.stereotype.Service; +import reactor.core.publisher.Mono; + +import java.util.List; + +@Service +public class SimilarProductsService implements GetAffinityProductsUC { + + public SimilarProductsService() { + } + + @Override + public Mono> getAffinityProducts(String productId) { + return null; + } +}