diff --git a/api/src/org/labkey/api/query/QueryService.java b/api/src/org/labkey/api/query/QueryService.java index f90e5c90704..ad554eff30b 100644 --- a/api/src/org/labkey/api/query/QueryService.java +++ b/api/src/org/labkey/api/query/QueryService.java @@ -323,6 +323,18 @@ interface ParameterDecl extends ParameterDescription { Object getDefault(); boolean isRequired(); + + default JSONObject toJSON() + { + JSONObject json = new JSONObject(); + + json.put("name", getName()); + json.put("defaultValue", getDefault()); + json.put("isRequired", isRequired()); + json.put("jdbcType", getJdbcType().toString()); + + return json; + } } class ParameterDeclaration extends ParameterDescriptionImpl implements ParameterDecl diff --git a/query/src/org/labkey/query/controllers/GetQueryDetailsAction.java b/query/src/org/labkey/query/controllers/GetQueryDetailsAction.java index 5394da6b60f..6b65cd3e3db 100644 --- a/query/src/org/labkey/query/controllers/GetQueryDetailsAction.java +++ b/query/src/org/labkey/query/controllers/GetQueryDetailsAction.java @@ -41,6 +41,8 @@ import org.labkey.api.exp.property.Domain; import org.labkey.api.exp.property.DomainKind; import org.labkey.api.exp.property.PropertyService; +import org.labkey.api.formSchema.Field; +import org.labkey.api.formSchema.FormSchema; import org.labkey.api.query.CustomView; import org.labkey.api.query.DefaultSchema; import org.labkey.api.query.FieldKey; @@ -69,6 +71,7 @@ import org.springframework.beans.PropertyValues; import org.springframework.validation.BindException; +import java.sql.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -168,6 +171,9 @@ public ApiResponse execute(Form form, BindException errors) resp.put("supportGroupConcatSubSelect", tinfo.getSqlDialect().supportsGroupConcatSubSelect()); resp.put("supportMerge", tinfo.supportsInsertOption(QueryUpdateService.InsertOption.MERGE)); + var namedParams = tinfo.getNamedParameters().stream().map(QueryService.ParameterDecl::toJSON).toList(); + resp.put("namedParameters", new JSONArray(namedParams)); + // check if this query is shadowing a local table if (isUserDefined) { diff --git a/query/src/org/labkey/query/sql/QParameter.java b/query/src/org/labkey/query/sql/QParameter.java index 2d47245a73d..8c2267936b2 100644 --- a/query/src/org/labkey/query/sql/QParameter.java +++ b/query/src/org/labkey/query/sql/QParameter.java @@ -16,6 +16,7 @@ package org.labkey.query.sql; import org.jetbrains.annotations.NotNull; +import org.json.JSONObject; import org.labkey.api.data.JdbcType; import org.labkey.api.query.QueryService;