Fix author-id publications search.

This commit is contained in:
Florian THIERRY
2024-08-30 22:37:03 +02:00
parent c09c68e1ac
commit afd184f936

View File

@@ -9,6 +9,7 @@ import org.codiki.infrastructure.publication.model.PublicationSearchJpaField;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import static jakarta.persistence.criteria.JoinType.LEFT; import static jakarta.persistence.criteria.JoinType.LEFT;
import static org.codiki.infrastructure.publication.model.PublicationSearchJpaField.AUTHOR_ID;
import static org.codiki.infrastructure.publication.model.PublicationSearchJpaField.AUTHOR_PSEUDO; import static org.codiki.infrastructure.publication.model.PublicationSearchJpaField.AUTHOR_PSEUDO;
import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaBuilder;
@@ -53,9 +54,13 @@ public class PublicationPredicateMapper {
From<?, ?> from = fromPublication; From<?, ?> from = fromPublication;
String attributeName = searchField.getFieldName(); String attributeName = searchField.getFieldName();
if (searchField == AUTHOR_PSEUDO) { if (List.of(AUTHOR_PSEUDO, AUTHOR_ID).contains(searchField)) {
from = fromPublication.join("author", LEFT); from = fromPublication.join("author", LEFT);
attributeName = "pseudo"; attributeName = switch(searchField) {
case AUTHOR_ID -> "id";
case AUTHOR_PSEUDO -> "pseudo";
default -> null;
};
} }
if (value instanceof UUID) { if (value instanceof UUID) {