diff --git a/pom.xml b/pom.xml index 593674a..22ce9cc 100644 --- a/pom.xml +++ b/pom.xml @@ -90,6 +90,10 @@ io.quarkus quarkus-smallrye-health + + io.quarkus + quarkus-redis-client + io.quarkus quarkus-junit diff --git a/src/main/java/com/backend/unifier/title/service/api/KodikSearchService.java b/src/main/java/com/backend/unifier/title/api/KodikSearchService.java similarity index 85% rename from src/main/java/com/backend/unifier/title/service/api/KodikSearchService.java rename to src/main/java/com/backend/unifier/title/api/KodikSearchService.java index dda31f5..0a4a5a5 100644 --- a/src/main/java/com/backend/unifier/title/service/api/KodikSearchService.java +++ b/src/main/java/com/backend/unifier/title/api/KodikSearchService.java @@ -1,8 +1,8 @@ -package com.backend.unifier.title.service.api; +package com.backend.unifier.title.api; import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; -import com.backend.metadata.kodik.service.api.model.KodikResponse; +import com.backend.metadata.kodik.api.model.KodikResponse; import io.smallrye.mutiny.Uni; import jakarta.ws.rs.GET; @@ -13,6 +13,10 @@ import jakarta.ws.rs.QueryParam; @Path("/kodik") @RegisterRestClient(baseUri = "stork://kodik-metadata-service") public interface KodikSearchService { + @GET + @Path("/list") + KodikResponse list(); + @GET @Path("/search") KodikResponse search(@QueryParam("title") String title); diff --git a/src/main/java/com/backend/unifier/title/service/api/ShikimoriSearchService.java b/src/main/java/com/backend/unifier/title/api/ShikimoriSearchService.java similarity index 90% rename from src/main/java/com/backend/unifier/title/service/api/ShikimoriSearchService.java rename to src/main/java/com/backend/unifier/title/api/ShikimoriSearchService.java index 7c8381c..ffb8d28 100644 --- a/src/main/java/com/backend/unifier/title/service/api/ShikimoriSearchService.java +++ b/src/main/java/com/backend/unifier/title/api/ShikimoriSearchService.java @@ -1,4 +1,4 @@ -package com.backend.unifier.title.service.api; +package com.backend.unifier.title.api; import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; diff --git a/src/main/java/com/backend/unifier/title/service/health/KodikServiceHealthCheck.java b/src/main/java/com/backend/unifier/title/health/KodikServiceHealthCheck.java similarity index 87% rename from src/main/java/com/backend/unifier/title/service/health/KodikServiceHealthCheck.java rename to src/main/java/com/backend/unifier/title/health/KodikServiceHealthCheck.java index d33bb1e..cf44110 100644 --- a/src/main/java/com/backend/unifier/title/service/health/KodikServiceHealthCheck.java +++ b/src/main/java/com/backend/unifier/title/health/KodikServiceHealthCheck.java @@ -1,4 +1,4 @@ -package com.backend.unifier.title.service.health; +package com.backend.unifier.title.health; import java.time.Instant; @@ -8,8 +8,8 @@ import org.eclipse.microprofile.health.HealthCheckResponseBuilder; import org.eclipse.microprofile.health.Readiness; import org.eclipse.microprofile.rest.client.inject.RestClient; -import com.backend.metadata.kodik.service.api.model.KodikResponse; -import com.backend.unifier.title.service.api.KodikSearchService; +import com.backend.metadata.kodik.api.model.KodikResponse; +import com.backend.unifier.title.api.KodikSearchService; import jakarta.enterprise.context.ApplicationScoped; diff --git a/src/main/java/com/backend/unifier/title/service/mapper/KodikResponseMapper.java b/src/main/java/com/backend/unifier/title/mapper/KodikResponseMapper.java similarity index 94% rename from src/main/java/com/backend/unifier/title/service/mapper/KodikResponseMapper.java rename to src/main/java/com/backend/unifier/title/mapper/KodikResponseMapper.java index 90ed2c9..e10bd3e 100644 --- a/src/main/java/com/backend/unifier/title/service/mapper/KodikResponseMapper.java +++ b/src/main/java/com/backend/unifier/title/mapper/KodikResponseMapper.java @@ -1,4 +1,4 @@ -package com.backend.unifier.title.service.mapper; +package com.backend.unifier.title.mapper; import java.util.ArrayList; import java.util.List; @@ -9,10 +9,10 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; -import com.backend.metadata.kodik.service.api.model.KodikResponse; -import com.backend.metadata.kodik.service.api.model.MaterialData; -import com.backend.unifier.title.service.model.SearchEntryDTO; -import com.backend.unifier.title.service.model.SearchResponseDTO; +import com.backend.metadata.kodik.api.model.KodikResponse; +import com.backend.metadata.kodik.api.model.MaterialData; +import com.backend.unifier.title.model.SearchEntryDTO; +import com.backend.unifier.title.model.SearchResponseDTO; @Mapper public interface KodikResponseMapper { diff --git a/src/main/java/com/backend/unifier/title/model/ContentIdentifier.java b/src/main/java/com/backend/unifier/title/model/ContentIdentifier.java new file mode 100644 index 0000000..0c1c48f --- /dev/null +++ b/src/main/java/com/backend/unifier/title/model/ContentIdentifier.java @@ -0,0 +1,4 @@ +package com.backend.unifier.title.model; + +public record ContentIdentifier(String source, String id) { +} diff --git a/src/main/java/com/backend/unifier/title/model/DetailEntryDTO.java b/src/main/java/com/backend/unifier/title/model/DetailEntryDTO.java new file mode 100644 index 0000000..169272b --- /dev/null +++ b/src/main/java/com/backend/unifier/title/model/DetailEntryDTO.java @@ -0,0 +1,4 @@ +package com.backend.unifier.title.model; + +public record DetailEntryDTO() { +} diff --git a/src/main/java/com/backend/unifier/title/model/IdentifierPointer.java b/src/main/java/com/backend/unifier/title/model/IdentifierPointer.java new file mode 100644 index 0000000..181f27b --- /dev/null +++ b/src/main/java/com/backend/unifier/title/model/IdentifierPointer.java @@ -0,0 +1,23 @@ +package com.backend.unifier.title.model; + +public class IdentifierPointer { + private String key; + private ContentIdentifier identifier; + + public IdentifierPointer(String key, ContentIdentifier identifier) { + this.key = key; + this.identifier = identifier; + } + + IdentifierPointer() { + } + + public String getKey() { + return key; + } + + public ContentIdentifier getIdentifier() { + return identifier; + } + +} diff --git a/src/main/java/com/backend/unifier/title/service/model/SearchEntryDTO.java b/src/main/java/com/backend/unifier/title/model/SearchEntryDTO.java similarity index 89% rename from src/main/java/com/backend/unifier/title/service/model/SearchEntryDTO.java rename to src/main/java/com/backend/unifier/title/model/SearchEntryDTO.java index c24526d..06477de 100644 --- a/src/main/java/com/backend/unifier/title/service/model/SearchEntryDTO.java +++ b/src/main/java/com/backend/unifier/title/model/SearchEntryDTO.java @@ -1,4 +1,4 @@ -package com.backend.unifier.title.service.model; +package com.backend.unifier.title.model; import java.util.List; diff --git a/src/main/java/com/backend/unifier/title/service/model/SearchResponseDTO.java b/src/main/java/com/backend/unifier/title/model/SearchResponseDTO.java similarity index 80% rename from src/main/java/com/backend/unifier/title/service/model/SearchResponseDTO.java rename to src/main/java/com/backend/unifier/title/model/SearchResponseDTO.java index 3ddd5b3..ef77ac9 100644 --- a/src/main/java/com/backend/unifier/title/service/model/SearchResponseDTO.java +++ b/src/main/java/com/backend/unifier/title/model/SearchResponseDTO.java @@ -1,4 +1,4 @@ -package com.backend.unifier.title.service.model; +package com.backend.unifier.title.model; import java.util.List; diff --git a/src/main/java/com/backend/unifier/title/resource/DetailResource.java b/src/main/java/com/backend/unifier/title/resource/DetailResource.java new file mode 100644 index 0000000..e9a9537 --- /dev/null +++ b/src/main/java/com/backend/unifier/title/resource/DetailResource.java @@ -0,0 +1,15 @@ +package com.backend.unifier.title.resource; + +import com.backend.unifier.title.model.DetailEntryDTO; + +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; + +@Path("/") +public class DetailResource { + @GET + @Path("/detail") + public DetailEntryDTO detail(String id) { + return null; + } +} diff --git a/src/main/java/com/backend/unifier/title/service/resource/SearchResource.java b/src/main/java/com/backend/unifier/title/resource/SearchResource.java similarity index 73% rename from src/main/java/com/backend/unifier/title/service/resource/SearchResource.java rename to src/main/java/com/backend/unifier/title/resource/SearchResource.java index 9a1faa1..0fa0311 100644 --- a/src/main/java/com/backend/unifier/title/service/resource/SearchResource.java +++ b/src/main/java/com/backend/unifier/title/resource/SearchResource.java @@ -1,10 +1,10 @@ -package com.backend.unifier.title.service.resource; +package com.backend.unifier.title.resource; import org.eclipse.microprofile.rest.client.inject.RestClient; -import com.backend.unifier.title.service.api.KodikSearchService; -import com.backend.unifier.title.service.model.SearchResponseDTO; -import com.backend.unifier.title.service.service.KodikResponseConvertService; +import com.backend.unifier.title.api.KodikSearchService; +import com.backend.unifier.title.model.SearchResponseDTO; +import com.backend.unifier.title.service.KodikResponseConvertService; import io.smallrye.mutiny.Uni; import jakarta.ws.rs.GET; @@ -37,4 +37,11 @@ public class SearchResource { return kodikConvertService.convert(result); } + @GET + @Path("/list") + public SearchResponseDTO list() { + var result = kodikSearchService.list(); + return kodikConvertService.convert(result); + } + } diff --git a/src/main/java/com/backend/unifier/title/service/IdentifierPointerService.java b/src/main/java/com/backend/unifier/title/service/IdentifierPointerService.java new file mode 100644 index 0000000..aa8193f --- /dev/null +++ b/src/main/java/com/backend/unifier/title/service/IdentifierPointerService.java @@ -0,0 +1,8 @@ +package com.backend.unifier.title.service; + +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class IdentifierPointerService { + +} diff --git a/src/main/java/com/backend/unifier/title/service/service/KodikResponseConvertService.java b/src/main/java/com/backend/unifier/title/service/KodikResponseConvertService.java similarity index 84% rename from src/main/java/com/backend/unifier/title/service/service/KodikResponseConvertService.java rename to src/main/java/com/backend/unifier/title/service/KodikResponseConvertService.java index 7326c19..f58c5e3 100644 --- a/src/main/java/com/backend/unifier/title/service/service/KodikResponseConvertService.java +++ b/src/main/java/com/backend/unifier/title/service/KodikResponseConvertService.java @@ -1,13 +1,13 @@ -package com.backend.unifier.title.service.service; +package com.backend.unifier.title.service; import java.util.List; import org.mapstruct.factory.Mappers; -import com.backend.metadata.kodik.service.api.model.KodikResponse; -import com.backend.unifier.title.service.mapper.KodikResponseMapper; -import com.backend.unifier.title.service.model.SearchEntryDTO; -import com.backend.unifier.title.service.model.SearchResponseDTO; +import com.backend.metadata.kodik.api.model.KodikResponse; +import com.backend.unifier.title.mapper.KodikResponseMapper; +import com.backend.unifier.title.model.SearchEntryDTO; +import com.backend.unifier.title.model.SearchResponseDTO; import io.smallrye.mutiny.Uni; import jakarta.enterprise.context.ApplicationScoped; @@ -39,6 +39,10 @@ public class KodikResponseConvertService { .map(this::resolveEntryPosters) .toList(); + if (entries.isEmpty()) { + return Uni.createFrom().item(new SearchResponseDTO(List.of())); + } + return Uni.combine().all().unis(entries) .with(list -> new SearchResponseDTO((List) list)); } diff --git a/src/main/java/com/backend/unifier/title/service/service/PosterUrlNormalizer.java b/src/main/java/com/backend/unifier/title/service/PosterUrlNormalizer.java similarity index 88% rename from src/main/java/com/backend/unifier/title/service/service/PosterUrlNormalizer.java rename to src/main/java/com/backend/unifier/title/service/PosterUrlNormalizer.java index 594dc77..6e3b454 100644 --- a/src/main/java/com/backend/unifier/title/service/service/PosterUrlNormalizer.java +++ b/src/main/java/com/backend/unifier/title/service/PosterUrlNormalizer.java @@ -1,4 +1,4 @@ -package com.backend.unifier.title.service.service; +package com.backend.unifier.title.service; import jakarta.enterprise.context.ApplicationScoped; diff --git a/src/main/java/com/backend/unifier/title/service/service/PosterUrlValidator.java b/src/main/java/com/backend/unifier/title/service/PosterUrlValidator.java similarity index 97% rename from src/main/java/com/backend/unifier/title/service/service/PosterUrlValidator.java rename to src/main/java/com/backend/unifier/title/service/PosterUrlValidator.java index b3d1591..d3967e5 100644 --- a/src/main/java/com/backend/unifier/title/service/service/PosterUrlValidator.java +++ b/src/main/java/com/backend/unifier/title/service/PosterUrlValidator.java @@ -1,4 +1,4 @@ -package com.backend.unifier.title.service.service; +package com.backend.unifier.title.service; import java.util.ArrayList; import java.util.List;