From 78e4fd3013f087f9743aea94c4b8eec6056663b9 Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Wed, 5 Jun 2024 09:41:59 +0300 Subject: [PATCH] added api to retrieve queuestats by ids --- .../controller/QueueStatsController.java | 18 ++++++++++++++++++ .../server/dao/queue/QueueStatsService.java | 4 ++++ .../dao/queue/BaseQueueStatsService.java | 10 ++++++++++ .../server/dao/queue/QueueStatsDao.java | 5 +++++ .../server/dao/sql/queue/JpaQueueStatsDao.java | 9 +++++++++ .../dao/sql/queue/QueueStatsRepository.java | 3 +++ 6 files changed, 49 insertions(+) diff --git a/application/src/main/java/org/thingsboard/server/controller/QueueStatsController.java b/application/src/main/java/org/thingsboard/server/controller/QueueStatsController.java index 6714e68e3d..2e52ce03bd 100644 --- a/application/src/main/java/org/thingsboard/server/controller/QueueStatsController.java +++ b/application/src/main/java/org/thingsboard/server/controller/QueueStatsController.java @@ -34,6 +34,8 @@ import org.thingsboard.server.config.annotations.ApiOperation; import org.thingsboard.server.dao.queue.QueueStatsService; import org.thingsboard.server.queue.util.TbCoreComponent; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; import static org.thingsboard.server.controller.ControllerConstants.PAGE_DATA_PARAMETERS; @@ -84,4 +86,20 @@ public class QueueStatsController extends BaseController { QueueStatsId queueStatsId = new QueueStatsId(UUID.fromString(queueStatsIdStr)); return checkNotNull(queueStatsService.findQueueStatsById(getTenantId(), queueStatsId)); } + + @ApiOperation(value = "Get QueueStats By Ids (getQueueStatsByIds)", + notes = "Fetch the Queue stats objects based on the provided ids. ") + @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") + @RequestMapping(value = "/queueStats", params = {"strQueueStatsIds"}, method = RequestMethod.GET) + @ResponseBody + public List getQueueStatsByIds( + @Parameter(description = "A list of queue stats ids, separated by comma ','", required = true) + @RequestParam("strQueueStatsIds") String[] strQueueStatsIds) throws ThingsboardException { + checkArrayParameter("strQueueStatsIds", strQueueStatsIds); + List queueStatsIds = new ArrayList<>(); + for (String queueStatsId : strQueueStatsIds) { + queueStatsIds.add(new QueueStatsId(toUUID(queueStatsId))); + } + return queueStatsService.findQueueStatsByIds(getTenantId(), queueStatsIds); + } } diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/queue/QueueStatsService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/queue/QueueStatsService.java index ec22f5d492..b34239909f 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/queue/QueueStatsService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/queue/QueueStatsService.java @@ -22,12 +22,16 @@ import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.queue.QueueStats; import org.thingsboard.server.dao.entity.EntityDaoService; +import java.util.List; + public interface QueueStatsService extends EntityDaoService { QueueStats save(TenantId tenantId, QueueStats queueStats); QueueStats findQueueStatsById(TenantId tenantId, QueueStatsId queueStatsId); + List findQueueStatsByIds(TenantId tenantId, List queueStatsId); + QueueStats findByTenantIdAndNameAndServiceId(TenantId tenantId, String queueName, String serviceId); PageData findByTenantId(TenantId tenantId, PageLink pageLink); diff --git a/dao/src/main/java/org/thingsboard/server/dao/queue/BaseQueueStatsService.java b/dao/src/main/java/org/thingsboard/server/dao/queue/BaseQueueStatsService.java index fd5989f1cf..69c6a7c418 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/queue/BaseQueueStatsService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/queue/BaseQueueStatsService.java @@ -30,9 +30,11 @@ import org.thingsboard.server.dao.entity.AbstractEntityService; import org.thingsboard.server.dao.service.DataValidator; import org.thingsboard.server.dao.service.Validator; +import java.util.List; import java.util.Optional; import static org.thingsboard.server.dao.service.Validator.validateId; +import static org.thingsboard.server.dao.service.Validator.validateIds; @Service("QueueStatsDaoService") @Slf4j @@ -59,6 +61,14 @@ public class BaseQueueStatsService extends AbstractEntityService implements Queu return queueStatsDao.findById(tenantId, queueStatsId.getId()); } + @Override + public List findQueueStatsByIds(TenantId tenantId, List queueStatsIds) { + log.trace("Executing findQueueStatsByIds, tenantId [{}], queueStatsIds [{}]", tenantId, queueStatsIds); + validateId(tenantId, id -> INCORRECT_TENANT_ID + id); + validateIds(queueStatsIds, ids -> "Incorrect queueStatsIds " + ids); + return queueStatsDao.findByIds(tenantId, queueStatsIds); + } + @Override public QueueStats findByTenantIdAndNameAndServiceId(TenantId tenantId, String queueName, String serviceId) { log.trace("Executing findByTenantIdAndNameAndServiceId, tenantId: [{}], queueName: [{}], serviceId: [{}]", tenantId, queueName, serviceId); diff --git a/dao/src/main/java/org/thingsboard/server/dao/queue/QueueStatsDao.java b/dao/src/main/java/org/thingsboard/server/dao/queue/QueueStatsDao.java index f4c20ea98e..5466a8afcc 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/queue/QueueStatsDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/queue/QueueStatsDao.java @@ -15,12 +15,15 @@ */ package org.thingsboard.server.dao.queue; +import org.thingsboard.server.common.data.id.QueueStatsId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.queue.QueueStats; import org.thingsboard.server.dao.Dao; +import java.util.List; + public interface QueueStatsDao extends Dao { QueueStats findByTenantIdQueueNameAndServiceId(TenantId tenantId, String queueName, String serviceId); @@ -29,4 +32,6 @@ public interface QueueStatsDao extends Dao { void deleteByTenantId(TenantId tenantId); + List findByIds(TenantId tenantId, List queueStatsIds); + } \ No newline at end of file diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueStatsDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueStatsDao.java index e49b5df77d..f680a42dc1 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueStatsDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueStatsDao.java @@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.EntityType; +import org.thingsboard.server.common.data.id.QueueStatsId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageLink; @@ -30,8 +31,11 @@ import org.thingsboard.server.dao.queue.QueueStatsDao; import org.thingsboard.server.dao.sql.JpaAbstractDao; import org.thingsboard.server.dao.util.SqlDao; +import java.util.List; import java.util.UUID; +import static org.thingsboard.server.dao.DaoUtil.toUUIDs; + @Slf4j @Component @SqlDao @@ -65,6 +69,11 @@ public class JpaQueueStatsDao extends JpaAbstractDao findByIds(TenantId tenantId, List queueStatsIds) { + return DaoUtil.convertDataList(queueStatsRepository.findByTenantIdAndIdIn(tenantId.getId(), toUUIDs(queueStatsIds))); + } + @Override public EntityType getEntityType() { return EntityType.QUEUE_STATS; diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/queue/QueueStatsRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/queue/QueueStatsRepository.java index 5e4a27f0ba..585f010469 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/queue/QueueStatsRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/queue/QueueStatsRepository.java @@ -24,6 +24,7 @@ import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; import org.thingsboard.server.dao.model.sql.QueueStatsEntity; +import java.util.List; import java.util.UUID; public interface QueueStatsRepository extends JpaRepository { @@ -42,4 +43,6 @@ public interface QueueStatsRepository extends JpaRepository findByTenantIdAndIdIn(UUID tenantId, List queueStatsIds); + } \ No newline at end of file