Add search publications use case but it's bugged.
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package org.codiki.domain.publication.model.search;
|
||||
|
||||
public enum ComparisonType {
|
||||
EQUALS,
|
||||
CONTAINS,
|
||||
BEFORE,
|
||||
AFTER
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package org.codiki.domain.publication.model.search;
|
||||
|
||||
public record PublicationSearchCriterion(
|
||||
PublicationSearchField searchField,
|
||||
ComparisonType searchType,
|
||||
Object value
|
||||
) { }
|
||||
@@ -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()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user