From aaa30c92f7ab189e30f4565d4843f141c92b823c Mon Sep 17 00:00:00 2001 From: sureshms Date: Thu, 21 Oct 2021 12:55:02 -0700 Subject: [PATCH] Cleaned up all DAO3 classes and moved common implementation to EntityDAO3 --- .../ConstraintViolationExceptionMapper.java | 1 - .../openmetadata/catalog/jdbi3/ChartDAO3.java | 44 +----------- .../catalog/jdbi3/ChartRepositoryHelper.java | 3 +- .../catalog/jdbi3/DashboardServiceDAO3.java | 22 +++--- .../catalog/jdbi3/DatabaseDAO3.java | 39 +---------- .../catalog/jdbi3/DatabaseServiceDAO3.java | 31 +-------- .../openmetadata/catalog/jdbi3/EntityDAO.java | 67 +++++++++++++++---- .../catalog/jdbi3/MessagingServiceDAO3.java | 25 +++---- .../openmetadata/catalog/jdbi3/ModelDAO3.java | 48 ++++--------- .../catalog/jdbi3/PipelineDAO3.java | 50 +++----------- .../catalog/jdbi3/PipelineServiceDAO3.java | 22 +++--- .../catalog/jdbi3/ReportDAO3.java | 23 +++---- .../openmetadata/catalog/jdbi3/TableDAO3.java | 43 +----------- .../openmetadata/catalog/jdbi3/TeamDAO3.java | 46 ++++--------- .../openmetadata/catalog/jdbi3/TopicDAO3.java | 46 +------------ .../catalog/jdbi3/TopicRepositoryHelper.java | 3 +- .../openmetadata/catalog/jdbi3/UserDAO3.java | 47 ++++--------- .../openmetadata/catalog/util/EntityUtil.java | 8 +-- 18 files changed, 147 insertions(+), 421 deletions(-) diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/exception/ConstraintViolationExceptionMapper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/exception/ConstraintViolationExceptionMapper.java index 56081311d28..941bd9a07ee 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/exception/ConstraintViolationExceptionMapper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/exception/ConstraintViolationExceptionMapper.java @@ -36,7 +36,6 @@ import java.util.stream.Collectors; public class ConstraintViolationExceptionMapper implements ExceptionMapper { @Override public Response toResponse(ConstraintViolationException exception) { - System.out.println(exception.getMessage()); Set> constraintViolations = exception.getConstraintViolations(); List errorMessages = constraintViolations.stream() .map(constraintViolation -> { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartDAO3.java index 778f1bb945d..dbcc144e8ac 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartDAO3.java @@ -1,13 +1,6 @@ package org.openmetadata.catalog.jdbi3; -import org.jdbi.v3.sqlobject.customizer.Bind; -import org.jdbi.v3.sqlobject.customizer.Define; -import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; import org.openmetadata.catalog.entity.data.Chart; -import org.openmetadata.catalog.entity.data.Table; - -import java.util.List; public interface ChartDAO3 extends EntityDAO{ @Override @@ -17,40 +10,5 @@ public interface ChartDAO3 extends EntityDAO{ default Class getEntityClass() { return Chart.class; } @Override - @SqlQuery("SELECT json FROM WHERE fullyQualifiedName = :name") - String findByName(@Define("table") String table, @Bind("name") String name); - - @Override - @SqlQuery("SELECT count(*) FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL)") - int listCount(@Define("table") String table, @Bind("fqnPrefix") String fqnPrefix); - - @SqlQuery( - "SELECT json FROM (" + - "SELECT fullyQualifiedName, json FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " +// Filter by - // service name - "fullyQualifiedName < :before " + // Pagination by chart fullyQualifiedName - "ORDER BY fullyQualifiedName DESC " + // Pagination ordering by chart fullyQualifiedName - "LIMIT :limit" + - ") last_rows_subquery ORDER BY fullyQualifiedName") - List listBefore(@Define("table") String table, @Bind("fqnPrefix") String fqnPrefix, @Bind("limit") int limit, - @Bind("before") String before); - - @Override - @SqlQuery("SELECT json FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " + - "fullyQualifiedName > :after " + - "ORDER BY fullyQualifiedName " + - "LIMIT :limit") - List listAfter(@Define("table") String table, @Bind("fqnPrefix") String fqnPrefix, @Bind("limit") int limit, - @Bind("after") String after); - - @Override - @SqlQuery("SELECT EXISTS (SELECT * FROM
WHERE id = :id)") - boolean exists(@Define("table") String table, @Bind("id") String id); - - @Override - @SqlUpdate("DELETE FROM
WHERE id = :id") - int delete(@Define("table") String table, @Bind("id") String id); + default String getNameColumn() { return "fullyQualifiedName"; } } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepositoryHelper.java index 9b2385df7ff..0aedc0d2ec4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepositoryHelper.java @@ -250,8 +250,7 @@ public class ChartRepositoryHelper implements EntityRepository{ private EntityReference getService(EntityReference service) throws IOException { String id = service.getId().toString(); if (service.getType().equalsIgnoreCase(Entity.DASHBOARD_SERVICE)) { - DashboardService serviceInstance = EntityUtil.validate(id, repo3.dashboardServiceDAO().findById(id), - DashboardService.class); + DashboardService serviceInstance = repo3.dashboardServiceDAO().findEntityById(id); service.setDescription(serviceInstance.getDescription()); service.setName(serviceInstance.getName()); } else { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceDAO3.java index ea392dbde20..a713f4f74a6 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceDAO3.java @@ -2,26 +2,20 @@ package org.openmetadata.catalog.jdbi3; import org.jdbi.v3.sqlobject.customizer.Bind; import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.openmetadata.catalog.entity.services.DashboardService; import java.util.List; -public interface DashboardServiceDAO3 { - @SqlUpdate("INSERT INTO dashboard_service_entity (json) VALUES (:json)") - void insert(@Bind("json") String json); +public interface DashboardServiceDAO3 extends EntityDAO { + @Override + default String getTableName() { return "dashboard_service_entity"; } - @SqlUpdate("UPDATE dashboard_service_entity SET json = :json where id = :id") - void update(@Bind("id") String id, @Bind("json") String json); + @Override + default String getNameColumn() { return "name"; } - @SqlQuery("SELECT json FROM dashboard_service_entity WHERE id = :id") - String findById(@Bind("id") String id); - - @SqlQuery("SELECT json FROM dashboard_service_entity WHERE name = :name") - String findByName(@Bind("name") String name); + @Override + default Class getEntityClass() { return DashboardService.class; } @SqlQuery("SELECT json FROM dashboard_service_entity WHERE (name = :name OR :name is NULL)") List list(@Bind("name") String name); - - @SqlUpdate("DELETE FROM dashboard_service_entity WHERE id = :id") - int delete(@Bind("id") String id); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseDAO3.java index a6261f388fa..e7468a39af4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseDAO3.java @@ -1,13 +1,7 @@ package org.openmetadata.catalog.jdbi3; -import org.jdbi.v3.sqlobject.customizer.Bind; -import org.jdbi.v3.sqlobject.customizer.Define; -import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; import org.openmetadata.catalog.entity.data.Database; -import java.util.List; - public interface DatabaseDAO3 extends EntityDAO { @Override default String getTableName() { return "database_entity"; } @@ -18,36 +12,5 @@ public interface DatabaseDAO3 extends EntityDAO { } @Override - @SqlQuery("SELECT json FROM
WHERE fullyQualifiedName = :name") - String findByName(@Define("table") String table, @Bind("name") String name); - - @Override - @SqlQuery("SELECT count(*) FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL)") - int listCount(@Define("table") String table, @Bind("fqnPrefix") String fqnPrefix); - - @SqlQuery( - "SELECT json FROM (" + - "SELECT fullyQualifiedName, json FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " +// Filter by service name - "fullyQualifiedName < :before " + // Pagination by database fullyQualifiedName - "ORDER BY fullyQualifiedName DESC " + // Pagination ordering by database fullyQualifiedName - "LIMIT :limit" + - ") last_rows_subquery ORDER BY fullyQualifiedName") - List listBefore(@Define("table") String table, @Bind("fqnPrefix") String parentFQN, @Bind("limit") int limit, - @Bind("before") String before); - - @SqlQuery("SELECT json FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " + - "fullyQualifiedName > :after " + - "ORDER BY fullyQualifiedName " + - "LIMIT :limit") - List listAfter(@Define("table") String table, @Bind("fqnPrefix") String parentFQN, @Bind("limit") int limit, - @Bind("after") String after); - - @SqlQuery("SELECT EXISTS (SELECT * FROM
WHERE id = :id)") - boolean exists(@Define("table") String table, @Bind("id") String id); - - @SqlUpdate("DELETE FROM
WHERE id = :id") - int delete(@Define("table") String table, @Bind("id") String id); + default String getNameColumn() { return "fullyQualifiedName"; } } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceDAO3.java index 2e918046b81..9f47192f019 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceDAO3.java @@ -4,48 +4,21 @@ package org.openmetadata.catalog.jdbi3; import org.jdbi.v3.sqlobject.customizer.Bind; import org.jdbi.v3.sqlobject.customizer.Define; import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; -import org.openmetadata.catalog.entity.data.Table; import org.openmetadata.catalog.entity.services.DatabaseService; import java.util.List; public interface DatabaseServiceDAO3 extends EntityDAO { @Override - default String getTableName() { return "dbService_entity"; } + default String getTableName() { return "dbService_Entity"; } @Override default Class getEntityClass() { return DatabaseService.class; } @Override - @SqlQuery("SELECT json FROM
WHERE name = :name") - String findByName(@Define("table") String table, @Bind("name") String name); + default String getNameColumn() { return "name"; } // TODO clean this up @SqlQuery("SELECT json FROM dbService_Entity WHERE (name = :name OR :name is NULL)") List list(@Define("table") String table, @Bind("name") String name); - - @Override - default List listAfter(String table, String parentFQN, int limit, String after) { - return null; - } - - @Override - default List listBefore(String table, String parentFQN, int limit, String before) { - return null; - } - - @Override - default int listCount(String table, String databaseFQN) { - return 0; - } - - @Override - default boolean exists(String table, String id) { - return false; - } - - @Override - @SqlUpdate("DELETE FROM
WHERE id = :id") - int delete(@Define("table") String table, @Bind("id") String id); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/EntityDAO.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/EntityDAO.java index fd5eff92ff5..548dcdbbcc8 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/EntityDAO.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/EntityDAO.java @@ -30,10 +30,16 @@ import java.util.List; import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityNotFound; public interface EntityDAO { - // TODO javadoc + /** + * Methods that need to be overridden by interfaces extending this + */ String getTableName(); Class getEntityClass(); + String getNameColumn(); + /** + * Common queries for all entities implemented here. Do not override. + */ @SqlUpdate("INSERT INTO
(json) VALUES (:json)") void insert(@Define("table") String table, @Bind("json") String json); @@ -43,13 +49,50 @@ public interface EntityDAO { @SqlQuery("SELECT json FROM
WHERE id = :id") String findById(@Define("table") String table, @Bind("id") String id); - String findByName(String table, String name); - int listCount(String table, String databaseFQN); // TODO check this - List listBefore(String table, String parentFQN, int limit, String before); - List listAfter(String table, String parentFQN, int limit, String after); - boolean exists(String table, String id); - int delete(String table, String id); + @SqlQuery("SELECT json FROM
WHERE = :name") + String findByName(@Define("table") String table, @Define("nameColumn") String nameColumn, + @Bind("name") String name); + @SqlQuery("SELECT count(*) FROM
WHERE " + + "( LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL)") + int listCount(@Define("table") String table, @Define("nameColumn") String nameColumn, + @Bind("fqnPrefix") String fqnPrefix); + + @SqlQuery( + "SELECT json FROM (" + + "SELECT , json FROM
WHERE " + + "( LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " +// Filter by + // service name + " < :before " + // Pagination by chart fullyQualifiedName + "ORDER BY DESC " + // Pagination ordering by chart fullyQualifiedName + "LIMIT :limit" + + ") last_rows_subquery ORDER BY ") + List listBefore(@Define("table") String table, + @Define("nameColumn") String nameColumn, + @Bind("fqnPrefix") String fqnPrefix, + @Bind("limit") int limit, + @Bind("before") String before); + + @SqlQuery("SELECT json FROM
WHERE " + + "( LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " + + " > :after " + + "ORDER BY " + + "LIMIT :limit") + List listAfter(@Define("table") String table, + @Define("nameColumn") String nameColumn, + @Bind("fqnPrefix") String fqnPrefix, + @Bind("limit") int limit, + @Bind("after") String after); + + @SqlQuery("SELECT EXISTS (SELECT * FROM
WHERE id = :id)") + boolean exists(@Define("table") String table, @Bind("id") String id); + + @SqlUpdate("DELETE FROM
WHERE id = :id") + int delete(@Define("table") String table, @Bind("id") String id); + + /** + * Default methods that interfaces with implementation. Don't override + */ default void insert(String json) { insert(getTableName(), json); } @@ -73,7 +116,7 @@ public interface EntityDAO { default T findEntityByName(String fqn) throws IOException { Class clz = getEntityClass(); - String json = findByName(getTableName(), fqn); + String json = findByName(getTableName(), getNameColumn(), fqn); T entity = null; if (json != null) { entity = JsonUtils.readValue(json, clz); @@ -89,19 +132,19 @@ public interface EntityDAO { } default String findJsonByFqn(String fqn) throws IOException { - return findByName(getTableName(), fqn); + return findByName(getTableName(), getNameColumn(), fqn); } default int listCount(String databaseFQN) { - return listCount(getTableName(), databaseFQN); + return listCount(getTableName(), getNameColumn(), databaseFQN); } default List listBefore(String parentFQN, int limit, String before) { - return listBefore(getTableName(), parentFQN, limit, before); + return listBefore(getTableName(), getNameColumn(), parentFQN, limit, before); } default List listAfter(String databaseFQN, int limit, String after) { - return listAfter(getTableName(), databaseFQN, limit, after); + return listAfter(getTableName(), getNameColumn(), databaseFQN, limit, after); } default boolean exists(String id) { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceDAO3.java index de5b1084abb..6d8726de8f6 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceDAO3.java @@ -1,27 +1,22 @@ package org.openmetadata.catalog.jdbi3; import org.jdbi.v3.sqlobject.customizer.Bind; +import org.jdbi.v3.sqlobject.customizer.Define; import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.openmetadata.catalog.entity.services.MessagingService; import java.util.List; -public interface MessagingServiceDAO3 { - @SqlUpdate("INSERT INTO messaging_service_entity (json) VALUES (:json)") - void insert(@Bind("json") String json); +public interface MessagingServiceDAO3 extends EntityDAO { + @Override + default String getTableName() { return "messaging_service_entity"; } - @SqlUpdate("UPDATE messaging_service_entity SET json = :json where id = :id") - void update(@Bind("id") String id, @Bind("json") String json); + @Override + default Class getEntityClass() { return MessagingService.class; } - @SqlQuery("SELECT json FROM messaging_service_entity WHERE id = :id") - String findById(@Bind("id") String id); - - @SqlQuery("SELECT json FROM messaging_service_entity WHERE name = :name") - String findByName(@Bind("name") String name); + @Override + default String getNameColumn() { return "name"; } @SqlQuery("SELECT json FROM messaging_service_entity WHERE (name = :name OR :name is NULL)") - List list(@Bind("name") String name); - - @SqlUpdate("DELETE FROM messaging_service_entity WHERE id = :id") - int delete(@Bind("id") String id); + List list(@Define("table") String table, @Bind("name") String name); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ModelDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ModelDAO3.java index 16d5e1348cc..15cc091fea9 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ModelDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ModelDAO3.java @@ -1,45 +1,21 @@ package org.openmetadata.catalog.jdbi3; -import org.jdbi.v3.sqlobject.customizer.Bind; +import org.jdbi.v3.sqlobject.customizer.Define; import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.openmetadata.catalog.entity.data.Model; -import java.util.List; +public interface ModelDAO3 extends EntityDAO{ + @Override + default String getTableName() { return "model_entity"; } -public interface ModelDAO3 { - @SqlUpdate("INSERT INTO model_entity(json) VALUES (:json)") - void insert(@Bind("json") String json); + @Override + default Class getEntityClass() { return Model.class; } - @SqlUpdate("UPDATE model_entity SET json = :json where id = :id") - void update(@Bind("id") String id, @Bind("json") String json); + @Override + default String getNameColumn() { return "fullyQualifiedName"; } - @SqlQuery("SELECT json FROM model_entity WHERE id = :id") - String findById(@Bind("id") String id); - - @SqlQuery("SELECT json FROM model_entity WHERE fullyQualifiedName = :name") - String findByFQN(@Bind("name") String name); - - @SqlQuery("SELECT count(*) FROM model_entity") - int listCount(); - - @SqlQuery( - "SELECT json FROM (" + - "SELECT fullyQualifiedName, json FROM model_entity WHERE " + - "fullyQualifiedName < :before " + // Pagination by model fullyQualifiedName - "ORDER BY fullyQualifiedName DESC " + - "LIMIT :limit" + - ") last_rows_subquery ORDER BY fullyQualifiedName") - List listBefore(@Bind("limit") int limit, - @Bind("before") String before); - - @SqlQuery("SELECT json FROM model_entity WHERE " + - "fullyQualifiedName > :after " + - "ORDER BY fullyQualifiedName " + - "LIMIT :limit") - List listAfter(@Bind("limit") int limit, - @Bind("after") String after); - - @SqlUpdate("DELETE FROM model_entity WHERE id = :id") - int delete(@Bind("id") String id); + @Override + @SqlQuery("SELECT count(*) FROM
") + int listCount(@Define("table") String table); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineDAO3.java index 42a6ca0fc4a..d77a68f9885 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineDAO3.java @@ -1,48 +1,14 @@ package org.openmetadata.catalog.jdbi3; -import org.jdbi.v3.sqlobject.customizer.Bind; -import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.openmetadata.catalog.entity.data.Pipeline; -import java.util.List; +public interface PipelineDAO3 extends EntityDAO { + @Override + default String getTableName() { return "pipeline_entity"; } -public interface PipelineDAO3 { - @SqlUpdate("INSERT INTO pipeline_entity(json) VALUES (:json)") - void insert(@Bind("json") String json); + @Override + default Class getEntityClass() { return Pipeline.class; } - @SqlUpdate("UPDATE pipeline_entity SET json = :json where id = :id") - void update(@Bind("id") String id, @Bind("json") String json); - - @SqlQuery("SELECT json FROM pipeline_entity WHERE id = :id") - String findById(@Bind("id") String id); - - @SqlQuery("SELECT json FROM pipeline_entity WHERE fullyQualifiedName = :name") - String findByFQN(@Bind("name") String name); - - @SqlQuery("SELECT count(*) FROM pipeline_entity WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL)") - int listCount(@Bind("fqnPrefix") String fqnPrefix); - - @SqlQuery( - "SELECT json FROM (" + - "SELECT fullyQualifiedName, json FROM pipeline_entity WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " +// Filter by - // service name - "fullyQualifiedName < :before " + // Pagination by pipeline fullyQualifiedName - "ORDER BY fullyQualifiedName DESC " + // Pagination ordering by fullyQualifiedName - "LIMIT :limit" + - ") last_rows_subquery ORDER BY fullyQualifiedName") - List listBefore(@Bind("fqnPrefix") String fqnPrefix, @Bind("limit") int limit, - @Bind("before") String before); - - @SqlQuery("SELECT json FROM pipeline_entity WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " + - "fullyQualifiedName > :after " + - "ORDER BY fullyQualifiedName " + - "LIMIT :limit") - List listAfter(@Bind("fqnPrefix") String fqnPrefix, @Bind("limit") int limit, - @Bind("after") String after); - - @SqlUpdate("DELETE FROM pipeline_entity WHERE id = :id") - int delete(@Bind("id") String id); + @Override + default String getNameColumn() { return "fullyQualifiedName"; } } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceDAO3.java index d7d66cd9a0b..ef0435cc531 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceDAO3.java @@ -2,26 +2,20 @@ package org.openmetadata.catalog.jdbi3; import org.jdbi.v3.sqlobject.customizer.Bind; import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.openmetadata.catalog.entity.services.PipelineService; import java.util.List; -public interface PipelineServiceDAO3 { - @SqlUpdate("INSERT INTO pipeline_service_entity (json) VALUES (:json)") - void insert(@Bind("json") String json); +public interface PipelineServiceDAO3 extends EntityDAO { + @Override + default String getTableName() { return "pipeline_service_entity"; } - @SqlUpdate("UPDATE pipeline_service_entity SET json = :json where id = :id") - void update(@Bind("id") String id, @Bind("json") String json); + @Override + default Class getEntityClass() { return PipelineService.class; } - @SqlQuery("SELECT json FROM pipeline_service_entity WHERE id = :id") - String findById(@Bind("id") String id); - - @SqlQuery("SELECT json FROM pipeline_service_entity WHERE name = :name") - String findByName(@Bind("name") String name); + @Override + default String getNameColumn() { return "name"; } @SqlQuery("SELECT json FROM pipeline_service_entity WHERE (name = :name OR :name is NULL)") List list(@Bind("name") String name); - - @SqlUpdate("DELETE FROM pipeline_service_entity WHERE id = :id") - int delete(@Bind("id") String id); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportDAO3.java index 34971b4cc72..82e95648537 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportDAO3.java @@ -1,27 +1,20 @@ package org.openmetadata.catalog.jdbi3; -import org.jdbi.v3.sqlobject.customizer.Bind; import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.openmetadata.catalog.entity.data.Report; import java.util.List; -public interface ReportDAO3 { - @SqlUpdate("INSERT INTO report_entity(json) VALUES (:json)") - void insert(@Bind("json") String json); +public interface ReportDAO3 extends EntityDAO { + @Override + default String getTableName() { return "report_entity"; } - @SqlUpdate("UPDATE report_entity SET json = :json where id = :id") - void update(@Bind("id") String id, @Bind("json") String json); + @Override + default Class getEntityClass() { return Report.class; } - @SqlQuery("SELECT json FROM report_entity WHERE id = :id") - String findById(@Bind("name") String id); - - @SqlQuery("SELECT json FROM report_entity WHERE fullyQualifiedName = :name") - String findByFQN(@Bind("name") String name); + @Override + default String getNameColumn() { return "fullyQualifiedName"; } @SqlQuery("SELECT json FROM report_entity") List list(); - - @SqlQuery("SELECT EXISTS (SELECT * FROM report_entity where id = :id)") - boolean exists(@Bind("id") String id); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableDAO3.java index e99cff064ee..1ebcd682307 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableDAO3.java @@ -1,14 +1,8 @@ package org.openmetadata.catalog.jdbi3; -import org.jdbi.v3.sqlobject.customizer.Bind; -import org.jdbi.v3.sqlobject.customizer.Define; -import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; import org.openmetadata.catalog.entity.data.Table; -import java.util.List; - public interface TableDAO3 extends EntityDAO
{ @Override default String getTableName() { @@ -19,40 +13,5 @@ public interface TableDAO3 extends EntityDAO
{ default Class
getEntityClass() { return Table.class; } @Override - @SqlQuery("SELECT json FROM
WHERE fullyQualifiedName = :tableFQN") - String findByName(@Define("table") String table, @Bind("tableFQN") String tableFQN); - - @Override - @SqlQuery("SELECT count(*) FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:databaseFQN, '.%') OR :databaseFQN IS NULL)") - int listCount(@Define("table") String table, @Bind("databaseFQN") String databaseFQN); - - @Override - @SqlQuery( - "SELECT json FROM (" + - "SELECT fullyQualifiedName, json FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:databaseFQN, '.%') OR :databaseFQN IS NULL) AND " + - "fullyQualifiedName < :before " + // Pagination by table fullyQualifiedName - "ORDER BY fullyQualifiedName DESC " + // Pagination ordering by table fullyQualifiedName - "LIMIT :limit" + - ") last_rows_subquery ORDER BY fullyQualifiedName") - List listBefore(@Define("table") String table, @Bind("databaseFQN") String parentFQN, @Bind("limit") int limit, - @Bind("before") String before); - - @Override - @SqlQuery("SELECT json FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:databaseFQN, '.%') OR :databaseFQN IS NULL) AND "+//Filter by databaseName - "fullyQualifiedName > :after " + // Pagination by table fullyQualifiedName - "ORDER BY fullyQualifiedName " + // Pagination ordering by table fullyQualifiedName - "LIMIT :limit") - List listAfter(@Define("table") String table, @Bind("databaseFQN") String parentFQN, @Bind("limit") int limit, - @Bind("after") String after); - - @Override - @SqlQuery("SELECT EXISTS (SELECT * FROM
WHERE id = :id)") - boolean exists(@Define("table") String table, @Bind("id") String id); - - @Override - @SqlUpdate("DELETE FROM
WHERE id = :id") - int delete(@Define("table") String table, @Bind("id") String id); + default String getNameColumn() { return "fullyQualifiedName"; } } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamDAO3.java index 8596fc2d1a8..73e1f2a5ae7 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamDAO3.java @@ -1,43 +1,21 @@ package org.openmetadata.catalog.jdbi3; -import org.jdbi.v3.sqlobject.customizer.Bind; +import org.jdbi.v3.sqlobject.customizer.Define; import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.openmetadata.catalog.entity.teams.Team; -import java.util.List; +public interface TeamDAO3 extends EntityDAO { + @Override + default String getTableName() { return "team_entity"; } -public interface TeamDAO3 { - @SqlUpdate("INSERT INTO team_entity (json) VALUES (:json)") - void insert(@Bind("json") String json); + @Override + default Class getEntityClass() { return Team.class; } - @SqlQuery("SELECT json FROM team_entity where id = :teamId") - String findById(@Bind("teamId") String teamId); + @Override + default String getNameColumn() { return "name"; } - @SqlQuery("SELECT json FROM team_entity where name = :name") - String findByName(@Bind("name") String name); - - @SqlQuery("SELECT count(*) FROM team_entity") - int listCount(); - - @SqlQuery( - "SELECT json FROM (" + - "SELECT name, json FROM team_entity WHERE " + - "name < :before " + // Pagination by team name - "ORDER BY name DESC " + // Pagination ordering by team name - "LIMIT :limit" + - ") last_rows_subquery ORDER BY name") - List listBefore(@Bind("limit") int limit, @Bind("before") String before); - - @SqlQuery("SELECT json FROM team_entity WHERE " + - "name > :after " + // Pagination by team name - "ORDER BY name " + // Pagination ordering by team name - "LIMIT :limit") - List listAfter(@Bind("limit") int limit, @Bind("after") String after); - - @SqlUpdate("DELETE FROM team_entity WHERE id = :teamId") - int delete(@Bind("teamId") String teamId); - - @SqlUpdate("UPDATE team_entity SET json = :json WHERE id = :id") - void update(@Bind("id") String id, @Bind("json") String json); + @Override + @SqlQuery("SELECT count(*) FROM
") + int listCount(@Define("table") String table); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicDAO3.java index 11bd1389fe7..8b0a5e5c4eb 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicDAO3.java @@ -1,15 +1,8 @@ package org.openmetadata.catalog.jdbi3; -import org.jdbi.v3.sqlobject.customizer.Bind; -import org.jdbi.v3.sqlobject.customizer.Define; -import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; -import org.openmetadata.catalog.entity.data.Table; import org.openmetadata.catalog.entity.data.Topic; -import java.util.List; - public interface TopicDAO3 extends EntityDAO { @Override default String getTableName() { return "topic_entity"; } @@ -18,42 +11,5 @@ public interface TopicDAO3 extends EntityDAO { default Class getEntityClass() { return Topic.class; } @Override - @SqlQuery("SELECT json FROM
WHERE fullyQualifiedName = :name") - String findByName(@Define("table") String table, @Bind("name") String name); - - @Override - @SqlQuery("SELECT count(*) FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL)") - // Filter by service name - int listCount(@Define("table") String table, @Bind("fqnPrefix") String fqnPrefix); - - @Override - @SqlQuery( - "SELECT json FROM (" + - "SELECT fullyQualifiedName, json FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " +// Filter by - // service name - "fullyQualifiedName < :before " + // Pagination by topic fullyQualifiedName - "ORDER BY fullyQualifiedName DESC " + // Pagination ordering by topic fullyQualifiedName - "LIMIT :limit" + - ") last_rows_subquery ORDER BY fullyQualifiedName") - List listBefore(@Define("table") String table, @Bind("fqnPrefix") String fqnPrefix, @Bind("limit") int limit, - @Bind("before") String before); - - @Override - @SqlQuery("SELECT json FROM
WHERE " + - "(fullyQualifiedName LIKE CONCAT(:fqnPrefix, '.%') OR :fqnPrefix IS NULL) AND " + - "fullyQualifiedName > :after " + - "ORDER BY fullyQualifiedName " + - "LIMIT :limit") - List listAfter(@Define("table") String table, @Bind("fqnPrefix") String fqnPrefix, @Bind("limit") int limit, - @Bind("after") String after); - - @Override - @SqlQuery("SELECT EXISTS (SELECT * FROM
WHERE id = :id)") - boolean exists(@Define("table") String table, @Bind("id") String id); - - @Override - @SqlUpdate("DELETE FROM
WHERE id = :id") - int delete(@Define("table") String table, @Bind("id") String id); + default String getNameColumn() { return "fullyQualifiedName"; } } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepositoryHelper.java index 5cb5c97059e..1deb179c385 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepositoryHelper.java @@ -256,8 +256,7 @@ public class TopicRepositoryHelper implements EntityRepository { private EntityReference getService(EntityReference service) throws IOException { String id = service.getId().toString(); if (service.getType().equalsIgnoreCase(Entity.MESSAGING_SERVICE)) { - MessagingService serviceInstance = EntityUtil.validate(id, repo3.messageServiceDAO().findById(id), - MessagingService.class); + MessagingService serviceInstance = repo3.messageServiceDAO().findEntityById(id); service.setDescription(serviceInstance.getDescription()); service.setName(serviceInstance.getName()); } else { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserDAO3.java index 5a0e9b285f6..8c1acb2c644 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserDAO3.java @@ -1,48 +1,29 @@ package org.openmetadata.catalog.jdbi3; import org.jdbi.v3.sqlobject.customizer.Bind; +import org.jdbi.v3.sqlobject.customizer.Define; import org.jdbi.v3.sqlobject.statement.SqlQuery; -import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import org.openmetadata.catalog.entity.teams.User; import java.util.List; -public interface UserDAO3 { - @SqlUpdate("INSERT INTO user_entity (json) VALUES (:json)") - void insert(@Bind("json") String json); +public interface UserDAO3 extends EntityDAO { + @Override + default String getTableName() { return "user_entity"; } - @SqlQuery("SELECT json FROM user_entity WHERE id = :id") - String findById(@Bind("id") String id); + @Override + default Class getEntityClass() { return User.class; } - @SqlQuery("SELECT json FROM user_entity WHERE name = :name") - String findByName(@Bind("name") String name); - - @SqlQuery("SELECT json FROM user_entity WHERE email = :email") - String findByEmail(@Bind("email") String email); + @Override + default String getNameColumn() { return "name"; } @SqlQuery("SELECT json FROM user_entity") List list(); - @SqlQuery("SELECT count(*) FROM user_entity") - int listCount(); + @SqlQuery("SELECT json FROM user_entity WHERE email = :email") + String findByEmail(@Bind("email") String email); - @SqlQuery( - "SELECT json FROM (" + - "SELECT name, json FROM user_entity WHERE " + - "name < :before " + // Pagination by user name - "ORDER BY name DESC " + // Pagination ordering by user name - "LIMIT :limit" + - ") last_rows_subquery ORDER BY name") - List listBefore(@Bind("limit") int limit, @Bind("before") String before); - - @SqlQuery("SELECT json FROM user_entity WHERE " + - "name > :after " + // Pagination by user name - "ORDER BY name " + // Pagination ordering by user name - "LIMIT :limit") - List listAfter(@Bind("limit") int limit, @Bind("after") String after); - - @SqlUpdate("UPDATE user_entity SET json = :json WHERE id = :id") - void update(@Bind("id") String id, @Bind("json") String json); - - @SqlQuery("SELECT EXISTS (SELECT * FROM user_entity where id = :id)") - boolean exists(@Bind("id") String id); + @Override + @SqlQuery("SELECT count(*) FROM
") + int listCount(@Define("table") String table); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java index daf79481ee9..42936609fc1 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java @@ -268,13 +268,13 @@ public final class EntityUtil { } String id = owner.getId().toString(); if (owner.getType().equalsIgnoreCase("user")) { - User ownerInstance = EntityUtil.validate(id, userDAO3.findById(id), User.class); + User ownerInstance = userDAO3.findEntityById(id); owner.setName(ownerInstance.getName()); if (Optional.ofNullable(ownerInstance.getDeactivated()).orElse(false)) { throw new IllegalArgumentException(CatalogExceptionMessage.deactivatedUser(id)); } } else if (owner.getType().equalsIgnoreCase("team")) { - Team ownerInstance = EntityUtil.validate(id, teamDAO.findById(id), Team.class); + Team ownerInstance = teamDAO.findEntityById(id); owner.setDescription(ownerInstance.getDescription()); owner.setName(ownerInstance.getName()); } else { @@ -933,7 +933,7 @@ public final class EntityUtil { String followedEntityId, String followedEntityType, String followerId, String followerEntity) throws IOException { - User user = EntityUtil.validate(followerId, userDAO3.findById(followerId), User.class); + User user = userDAO3.findEntityById(followerId); if (Optional.ofNullable(user.getDeactivated()).orElse(false)) { throw new IllegalArgumentException(CatalogExceptionMessage.deactivatedUser(followerId)); } @@ -969,7 +969,7 @@ public final class EntityUtil { Entity.USER); List followers = new ArrayList<>(); for (String followerId : followerIds) { - User user = EntityUtil.validate(followerId, userDAO3.findById(followerId), User.class); + User user = userDAO3.findEntityById(followerId); followers.add(new EntityReference().withName(user.getName()).withId(user.getId()).withType("user")); } return followers;