Add search publications use case but it's bugged.

This commit is contained in:
Florian THIERRY
2024-03-15 14:56:34 +01:00
parent 50b305c3cd
commit 6e2b86153e
21 changed files with 589 additions and 7 deletions

View File

@@ -0,0 +1,8 @@
package org.codiki.domain.publication.model.search;
public enum ComparisonType {
EQUALS,
CONTAINS,
BEFORE,
AFTER
}

View File

@@ -0,0 +1,7 @@
package org.codiki.domain.publication.model.search;
public record PublicationSearchCriterion(
PublicationSearchField searchField,
ComparisonType searchType,
Object value
) { }

View File

@@ -0,0 +1,26 @@
package org.codiki.domain.publication.model.search;
import java.util.Optional;
import java.util.stream.Stream;
public enum PublicationSearchField {
ID,
KEY,
TITLE,
TEXT,
DESCRIPTION,
CREATION_DATE,
CATEGORY_ID,
AUTHOR_ID,
AUTHOR_PSEUDO;
public static Optional<PublicationSearchField> from(String fieldName) {
return Optional.ofNullable(fieldName)
.map(String::toUpperCase)
.flatMap(uppercaseFieldName ->
Stream.of(PublicationSearchField.values())
.filter(field -> field.name().equals(uppercaseFieldName))
.findFirst()
);
}
}

View File

@@ -1,9 +1,11 @@
package org.codiki.domain.publication.port;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.codiki.domain.publication.model.Publication;
import org.codiki.domain.publication.model.search.PublicationSearchCriterion;
public interface PublicationPort {
void save(Publication publication);
@@ -11,4 +13,6 @@ public interface PublicationPort {
Optional<Publication> findById(UUID publicationId);
void delete(Publication publication);
List<Publication> search(List<PublicationSearchCriterion> criteria);
}