diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ListFilter.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ListFilter.java index 745543f70df..8c6250cc8a4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ListFilter.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ListFilter.java @@ -38,6 +38,7 @@ public class ListFilter { condition = addCondition(condition, getDatabaseCondition(tableName)); condition = addCondition(condition, getServiceCondition(tableName)); condition = addCondition(condition, getParentCondition(tableName)); + condition = addCondition(condition, getCategoryCondition(tableName)); return condition.isEmpty() ? "WHERE TRUE" : "WHERE " + condition; } @@ -67,12 +68,23 @@ public class ListFilter { return parentFqn == null ? "" : getFqnPrefixCondition(tableName, escape(parentFqn)); } + public String getCategoryCondition(String tableName) { + String category = queryParams.get("category"); + return category == null ? "" : getCategoryPrefixCondition(tableName, escape(category)); + } + private String getFqnPrefixCondition(String tableName, String fqnPrefix) { return tableName == null ? String.format("fullyQualifiedName LIKE '%s%s%%'", fqnPrefix, Entity.SEPARATOR) : String.format("%s.fullyQualifiedName LIKE '%s%s%%'", tableName, fqnPrefix, Entity.SEPARATOR); } + private String getCategoryPrefixCondition(String tableName, String category) { + return tableName == null + ? String.format("category LIKE '%s%s%%'", category, "") + : String.format("%s.category LIKE '%s%s%%'", tableName, category, ""); + } + private String addCondition(String condition1, String condition2) { if (condition1.isEmpty()) { return condition2; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/types/TypeResource.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/types/TypeResource.java index 199e33975a5..ced06560195 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/types/TypeResource.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/types/TypeResource.java @@ -56,7 +56,6 @@ import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.api.CreateType; import org.openmetadata.catalog.entity.Type; -import org.openmetadata.catalog.entity.type.Category; import org.openmetadata.catalog.entity.type.CustomField; import org.openmetadata.catalog.jdbi3.CollectionDAO; import org.openmetadata.catalog.jdbi3.ListFilter; @@ -144,7 +143,7 @@ public class TypeResource extends EntityResource { description = "Filter types by metadata type category.", schema = @Schema(type = "string", example = "Field, Entity")) @QueryParam("category") - Category category, + String categoryParam, @Parameter(description = "Limit the number types returned. (1 to 1000000, " + "default = 10)") @DefaultValue("10") @Min(0) @@ -158,7 +157,7 @@ public class TypeResource extends EntityResource { @QueryParam("after") String after) throws IOException { - ListFilter filter = new ListFilter(Include.ALL); + ListFilter filter = new ListFilter(Include.ALL).addQueryParam("category", categoryParam); return super.listInternal(uriInfo, securityContext, "", filter, limitParam, before, after); }