@Override
public ValidationRun newValidationRun(ValidationRun validationRun, Function<String, ValidationRunStatusID> validationRunStatusService) {
int id = dbCreate(
"INSERT INTO VALIDATION_RUNS(BUILDID, VALIDATIONSTAMPID) VALUES (:buildId, :validationStampId)",
params("buildId", validationRun.getBuild().id())
.addValue("validationStampId", validationRun.getValidationStamp().id())
);
if (validationRun.getData() != null) {
getNamedParameterJdbcTemplate().update(
"INSERT INTO VALIDATION_RUN_DATA(VALIDATION_RUN, DATA_TYPE_ID, DATA) VALUES (:validationRunId, :dataTypeId, CAST(:data AS JSONB))",
params("validationRunId", id)
.addValue("dataTypeId", validationRun.getData().getDescriptor().getId())
.addValue("data", writeJson(validationRun.getData().getData()))
);
}
validationRun.getValidationRunStatuses()
.forEach(validationRunStatus -> newValidationRunStatus(id, validationRunStatus));
return getValidationRun(ID.of(id), validationRunStatusService);
}