From 8093049555c4051096d91b81ebbfecf099a36fcd Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Thu, 8 Aug 2024 19:18:58 +0300 Subject: [PATCH] added search for oauth2 clients, domains, mobile apps --- .../server/dao/domain/DomainServiceImpl.java | 4 ++-- .../server/dao/mobile/MobileAppServiceImpl.java | 5 ++--- .../server/dao/sql/domain/DomainRepository.java | 6 +++++- .../server/dao/sql/domain/JpaDomainDao.java | 2 +- .../server/dao/sql/mobile/JpaMobileAppDao.java | 2 +- .../server/dao/sql/mobile/MobileAppRepository.java | 6 +++++- .../server/dao/sql/oauth2/JpaOAuth2ClientDao.java | 2 +- .../server/dao/sql/oauth2/OAuth2ClientRepository.java | 10 +++++++--- 8 files changed, 24 insertions(+), 13 deletions(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/domain/DomainServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/domain/DomainServiceImpl.java index 4dd996d75c..196a9324e7 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/domain/DomainServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/domain/DomainServiceImpl.java @@ -123,11 +123,11 @@ public class DomainServiceImpl extends AbstractEntityService implements DomainSe log.trace("Executing findDomainInfosByTenantId [{}]", tenantId); PageData pageData = domainDao.findByTenantId(tenantId, pageLink); List domainInfos = new ArrayList<>(); - pageData.getData().stream().sorted(Comparator.comparing(BaseData::getUuidId)).forEach(domain -> { + for (Domain domain : pageData.getData()) { domainInfos.add(new DomainInfo(domain, oauth2ClientDao.findByDomainId(domain.getUuidId()).stream() .map(OAuth2ClientInfo::new) .collect(Collectors.toList()))); - }); + } return new PageData<>(domainInfos, pageData.getTotalPages(), pageData.getTotalElements(), pageData.hasNext()); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/mobile/MobileAppServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/mobile/MobileAppServiceImpl.java index 5272d4e58d..aeac676903 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/mobile/MobileAppServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/mobile/MobileAppServiceImpl.java @@ -20,7 +20,6 @@ import org.hibernate.exception.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.thingsboard.server.common.data.BaseData; import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.HasId; @@ -95,11 +94,11 @@ public class MobileAppServiceImpl extends AbstractEntityService implements Mobil log.trace("Executing findMobileAppInfosByTenantId [{}]", tenantId); PageData pageData = mobileAppDao.findByTenantId(tenantId, pageLink); List mobileAppInfos = new ArrayList<>(); - pageData.getData().stream().sorted(Comparator.comparing(BaseData::getUuidId)).forEach(mobileApp -> { + for (MobileApp mobileApp : pageData.getData()) { mobileAppInfos.add(new MobileAppInfo(mobileApp, oauth2ClientDao.findByMobileAppId(mobileApp.getUuidId()).stream() .map(OAuth2ClientInfo::new) .collect(Collectors.toList()))); - }); + } return new PageData<>(mobileAppInfos, pageData.getTotalPages(), pageData.getTotalElements(), pageData.hasNext()); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/domain/DomainRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/domain/DomainRepository.java index baf4358e8a..d2cc957fe8 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/domain/DomainRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/domain/DomainRepository.java @@ -28,7 +28,11 @@ import java.util.UUID; public interface DomainRepository extends JpaRepository { - Page findByTenantId(@Param("tenantId") UUID tenantId, Pageable pageable); + @Query("SELECT d FROM DomainEntity d WHERE d.tenantId = :tenantId AND " + + "(:searchText is NULL OR ilike(d.name, concat('%', :searchText, '%')) = true)") + Page findByTenantId(@Param("tenantId") UUID tenantId, + @Param("searchText") String searchText, + Pageable pageable); @Transactional @Modifying diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/domain/JpaDomainDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/domain/JpaDomainDao.java index 4bcdeeec6b..7701483644 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/domain/JpaDomainDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/domain/JpaDomainDao.java @@ -57,7 +57,7 @@ public class JpaDomainDao extends JpaAbstractDao implement @Override public PageData findByTenantId(TenantId tenantId, PageLink pageLink) { - return DaoUtil.toPageData(domainRepository.findByTenantId(tenantId.getId(), DaoUtil.toPageable(pageLink))); + return DaoUtil.toPageData(domainRepository.findByTenantId(tenantId.getId(), pageLink.getTextSearch(), DaoUtil.toPageable(pageLink))); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/mobile/JpaMobileAppDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/mobile/JpaMobileAppDao.java index 2e884d0d84..8f09c7267b 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/mobile/JpaMobileAppDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/mobile/JpaMobileAppDao.java @@ -57,7 +57,7 @@ public class JpaMobileAppDao extends JpaAbstractDao @Override public PageData findByTenantId(TenantId tenantId, PageLink pageLink) { - return DaoUtil.toPageData(mobileAppRepository.findByTenantId(tenantId.getId(), DaoUtil.toPageable(pageLink))); + return DaoUtil.toPageData(mobileAppRepository.findByTenantId(tenantId.getId(), pageLink.getTextSearch(), DaoUtil.toPageable(pageLink))); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/mobile/MobileAppRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/mobile/MobileAppRepository.java index 16ca927fbb..185a277644 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/mobile/MobileAppRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/mobile/MobileAppRepository.java @@ -28,7 +28,11 @@ import java.util.UUID; public interface MobileAppRepository extends JpaRepository { - Page findByTenantId(@Param("tenantId") UUID tenantId, Pageable pageable); + @Query("SELECT a FROM MobileAppEntity a WHERE a.tenantId = :tenantId AND " + + "(:searchText is NULL OR ilike(a.pkgName, concat('%', :searchText, '%')) = true)") + Page findByTenantId(@Param("tenantId") UUID tenantId, + @Param("searchText") String searchText, + Pageable pageable); @Transactional @Modifying diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/JpaOAuth2ClientDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/JpaOAuth2ClientDao.java index e6fd04da78..542578a028 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/JpaOAuth2ClientDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/JpaOAuth2ClientDao.java @@ -52,7 +52,7 @@ public class JpaOAuth2ClientDao extends JpaAbstractDao findByTenantId(UUID tenantId, PageLink pageLink) { - return DaoUtil.toPageData(repository.findByTenantId(tenantId, DaoUtil.toPageable(pageLink))); + return DaoUtil.toPageData(repository.findByTenantId(tenantId, pageLink.getTextSearch(), DaoUtil.toPageable(pageLink))); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/OAuth2ClientRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/OAuth2ClientRepository.java index 8c4e6efa15..51804f2c82 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/OAuth2ClientRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/OAuth2ClientRepository.java @@ -29,13 +29,17 @@ import java.util.UUID; public interface OAuth2ClientRepository extends JpaRepository { - Page findByTenantId(@Param("tenantId") UUID tenantId, Pageable pageable); + @Query("SELECT с FROM OAuth2ClientEntity с WHERE с.tenantId = :tenantId AND " + + "(:searchText is NULL OR ilike(с.title, concat('%', :searchText, '%')) = true)") + Page findByTenantId(@Param("tenantId") UUID tenantId, + @Param("searchText") String searchText, + Pageable pageable); @Query("SELECT c " + "FROM OAuth2ClientEntity c " + "LEFT JOIN DomainOauth2ClientEntity dc on c.id = dc.oauth2ClientId " + "LEFT JOIN DomainEntity domain on dc.domainId = domain.id " + - "AND domain.name = :domainName " + + "WHERE domain.name = :domainName " + "AND (:platformFilter IS NULL OR c.platforms IS NULL OR c.platforms = '' OR c.platforms LIKE :platformFilter)") List findEnabledByDomainNameAndPlatformType(@Param("domainName") String domainName, @Param("platformFilter") String platformFilter); @@ -44,7 +48,7 @@ public interface OAuth2ClientRepository extends JpaRepository findEnabledByPkgNameAndPlatformType(@Param("pkgName") String pkgName, @Param("platformFilter") String platformFilter);