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;