Skip to content

Commit

Permalink
adds validation for entity preview requests
Browse files Browse the repository at this point in the history
Signed-off-by: Max Thonagel <12283268+thoniTUB@users.noreply.github.com>
  • Loading branch information
thoniTUB committed May 29, 2024
1 parent 3b3daee commit b5fc84b
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import com.bakdata.conquery.models.datasets.SecondaryIdDescription;
import com.bakdata.conquery.models.datasets.concepts.Connector;
import com.bakdata.conquery.models.error.ConqueryError;
import com.bakdata.conquery.models.exceptions.ValidatorHelper;
import com.bakdata.conquery.models.execution.ExecutionState;
import com.bakdata.conquery.models.execution.ManagedExecution;
import com.bakdata.conquery.models.i18n.I18n;
Expand Down Expand Up @@ -84,6 +85,7 @@
import com.google.common.collect.MutableClassToInstanceMap;
import jakarta.inject.Inject;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Validator;
import jakarta.ws.rs.BadRequestException;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.UriBuilder;
Expand All @@ -102,6 +104,8 @@ public class QueryProcessor {
private MetaStorage storage;
@Inject
private ConqueryConfig config;
@Inject
private Validator validator;



Expand Down Expand Up @@ -339,6 +343,9 @@ public FullExecutionStatus getSingleEntityExport(Subject subject, UriBuilder uri
final EntityPreviewForm form =
EntityPreviewForm.create(entity, idKind, dateRange, sources, previewConfig.getSelects(), previewConfig.getTimeStratifiedSelects(), datasetRegistry);

// Validate our own form because we provide it directly to the processor, which does not validate.
ValidatorHelper.failOnError(log, validator.validate(form));

// TODO make sure that subqueries are also system
// TODO do not persist system queries
final EntityPreviewExecution execution = (EntityPreviewExecution) postQuery(dataset, form, subject, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.collect.ClassToInstanceMap;
import jakarta.validation.Valid;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -68,7 +69,9 @@ public class EntityPreviewForm extends Form implements InternalForm {
public static final String VALUES_QUERY_NAME = "VALUES";


@Valid
private final AbsoluteFormQuery infoCardQuery;
@Valid
private final TableExportQuery valuesQuery;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public class DatasetQueryResource {

@POST
@Path("/entity")
public FullExecutionStatus getEntityData(@Auth Subject subject, EntityPreviewRequest query, @Context HttpServletRequest request) {
public FullExecutionStatus getEntityData(@Auth Subject subject, @Valid EntityPreviewRequest query, @Context HttpServletRequest request) {
subject.authorize(dataset, Ability.READ);
subject.authorize(dataset, Ability.PRESERVE_ID);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.bakdata.conquery.models.common.Range;
import com.bakdata.conquery.models.datasets.concepts.Connector;
import com.fasterxml.jackson.annotation.JsonCreator;
import jakarta.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
import lombok.Data;

Expand All @@ -17,6 +18,7 @@ public class EntityPreviewRequest {
private final String entityId;
private final Range<LocalDate> time;
@NsIdRefCollection
@NotEmpty
private final List<Connector> sources;

//TODO uncomment, when frontend is adapted to support this
Expand Down

0 comments on commit b5fc84b

Please sign in to comment.