added search for oauth2 clients, domains, mobile apps

This commit is contained in:
dashevchenko 2024-08-08 19:18:58 +03:00
parent 7a2a194074
commit 8093049555
8 changed files with 24 additions and 13 deletions

View File

@ -123,11 +123,11 @@ public class DomainServiceImpl extends AbstractEntityService implements DomainSe
log.trace("Executing findDomainInfosByTenantId [{}]", tenantId);
PageData<Domain> pageData = domainDao.findByTenantId(tenantId, pageLink);
List<DomainInfo> 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());
}

View File

@ -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<MobileApp> pageData = mobileAppDao.findByTenantId(tenantId, pageLink);
List<MobileAppInfo> 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());
}

View File

@ -28,7 +28,11 @@ import java.util.UUID;
public interface DomainRepository extends JpaRepository<DomainEntity, UUID> {
Page<DomainEntity> 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<DomainEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText,
Pageable pageable);
@Transactional
@Modifying

View File

@ -57,7 +57,7 @@ public class JpaDomainDao extends JpaAbstractDao<DomainEntity, Domain> implement
@Override
public PageData<Domain> 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

View File

@ -57,7 +57,7 @@ public class JpaMobileAppDao extends JpaAbstractDao<MobileAppEntity, MobileApp>
@Override
public PageData<MobileApp> 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

View File

@ -28,7 +28,11 @@ import java.util.UUID;
public interface MobileAppRepository extends JpaRepository<MobileAppEntity, UUID> {
Page<MobileAppEntity> 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<MobileAppEntity> findByTenantId(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText,
Pageable pageable);
@Transactional
@Modifying

View File

@ -52,7 +52,7 @@ public class JpaOAuth2ClientDao extends JpaAbstractDao<OAuth2ClientEntity, OAuth
@Override
public PageData<OAuth2Client> 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

View File

@ -29,13 +29,17 @@ import java.util.UUID;
public interface OAuth2ClientRepository extends JpaRepository<OAuth2ClientEntity, UUID> {
Page<OAuth2ClientEntity> 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<OAuth2ClientEntity> 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<OAuth2ClientEntity> findEnabledByDomainNameAndPlatformType(@Param("domainName") String domainName,
@Param("platformFilter") String platformFilter);
@ -44,7 +48,7 @@ public interface OAuth2ClientRepository extends JpaRepository<OAuth2ClientEntity
"FROM OAuth2ClientEntity c " +
"LEFT JOIN MobileAppOauth2ClientEntity mc on c.id = mc.oauth2ClientId " +
"LEFT JOIN MobileAppEntity app on mc.mobileAppId = app.id " +
"AND app.pkgName = :pkgName " +
"WHERE app.pkgName = :pkgName " +
"AND (:platformFilter IS NULL OR c.platforms IS NULL OR c.platforms = '' OR c.platforms LIKE :platformFilter)")
List<OAuth2ClientEntity> findEnabledByPkgNameAndPlatformType(@Param("pkgName") String pkgName,
@Param("platformFilter") String platformFilter);