added findByKey method to service

This commit is contained in:
IrynaMatveieva 2025-05-01 08:59:58 +03:00
parent 44a4d9d690
commit 5f9afd14d3
5 changed files with 20 additions and 4 deletions

View File

@ -37,4 +37,6 @@ public interface JobService extends EntityDaoService {
PageData<Job> findJobsByTenantId(TenantId tenantId, PageLink pageLink); PageData<Job> findJobsByTenantId(TenantId tenantId, PageLink pageLink);
Job findJobByKey(TenantId tenantId, String key);
} }

View File

@ -29,8 +29,8 @@ import org.thingsboard.server.common.data.job.JobResult;
import org.thingsboard.server.common.data.job.JobStats; import org.thingsboard.server.common.data.job.JobStats;
import org.thingsboard.server.common.data.job.JobStatus; import org.thingsboard.server.common.data.job.JobStatus;
import org.thingsboard.server.common.data.job.JobType; import org.thingsboard.server.common.data.job.JobType;
import org.thingsboard.server.common.data.job.TaskResult;
import org.thingsboard.server.common.data.job.TaskFailure; import org.thingsboard.server.common.data.job.TaskFailure;
import org.thingsboard.server.common.data.job.TaskResult;
import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.entity.AbstractEntityService; import org.thingsboard.server.dao.entity.AbstractEntityService;
@ -187,6 +187,11 @@ public class DefaultJobService extends AbstractEntityService implements JobServi
return jobDao.findByTenantId(tenantId, pageLink); return jobDao.findByTenantId(tenantId, pageLink);
} }
@Override
public Job findJobByKey(TenantId tenantId, String key) {
return jobDao.findByKey(tenantId, key);
}
private Job findForUpdate(TenantId tenantId, JobId jobId) { private Job findForUpdate(TenantId tenantId, JobId jobId) {
return jobDao.findByIdForUpdate(tenantId, jobId); return jobDao.findByIdForUpdate(tenantId, jobId);
} }

View File

@ -30,6 +30,8 @@ public interface JobDao extends Dao<Job> {
Job findByIdForUpdate(TenantId tenantId, JobId jobId); Job findByIdForUpdate(TenantId tenantId, JobId jobId);
Job findByKey(TenantId tenantId, String key);
boolean existsByKeyAndStatusOneOf(String key, JobStatus... statuses); boolean existsByKeyAndStatusOneOf(String key, JobStatus... statuses);
boolean existsByTenantIdAndTypeAndStatusOneOf(TenantId tenantId, JobType type, JobStatus... statuses); boolean existsByTenantIdAndTypeAndStatusOneOf(TenantId tenantId, JobType type, JobStatus... statuses);

View File

@ -35,8 +35,8 @@ import java.util.UUID;
public interface JobRepository extends JpaRepository<JobEntity, UUID> { public interface JobRepository extends JpaRepository<JobEntity, UUID> {
@Query("SELECT j FROM JobEntity j WHERE j.tenantId = :tenantId " + @Query("SELECT j FROM JobEntity j WHERE j.tenantId = :tenantId " +
"AND (:searchText IS NULL OR ilike(j.key, concat('%', :searchText, '%')) = true " + "AND (:searchText IS NULL OR ilike(j.key, concat('%', :searchText, '%')) = true " +
"OR ilike(j.description, concat('%', :searchText, '%')) = true)") "OR ilike(j.description, concat('%', :searchText, '%')) = true)")
Page<JobEntity> findByTenantIdAndSearchText(@Param("tenantId") UUID tenantId, Page<JobEntity> findByTenantIdAndSearchText(@Param("tenantId") UUID tenantId,
@Param("searchText") String searchText, @Param("searchText") String searchText,
Pageable pageable); Pageable pageable);
@ -45,6 +45,8 @@ public interface JobRepository extends JpaRepository<JobEntity, UUID> {
@Query("SELECT j FROM JobEntity j WHERE j.id = :id") @Query("SELECT j FROM JobEntity j WHERE j.id = :id")
JobEntity findByIdForUpdate(UUID id); JobEntity findByIdForUpdate(UUID id);
JobEntity findByTenantIdAndKey(@Param("tenantId") UUID tenantId, @Param("key") String key);
boolean existsByKeyAndStatusIn(String key, List<JobStatus> statuses); boolean existsByKeyAndStatusIn(String key, List<JobStatus> statuses);
boolean existsByTenantIdAndTypeAndStatusIn(UUID tenantId, JobType type, List<JobStatus> statuses); boolean existsByTenantIdAndTypeAndStatusIn(UUID tenantId, JobType type, List<JobStatus> statuses);

View File

@ -29,9 +29,9 @@ import org.thingsboard.server.common.data.job.JobType;
import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.job.JobDao;
import org.thingsboard.server.dao.model.sql.JobEntity; import org.thingsboard.server.dao.model.sql.JobEntity;
import org.thingsboard.server.dao.sql.JpaAbstractDao; import org.thingsboard.server.dao.sql.JpaAbstractDao;
import org.thingsboard.server.dao.job.JobDao;
import org.thingsboard.server.dao.util.SqlDao; import org.thingsboard.server.dao.util.SqlDao;
import java.util.Arrays; import java.util.Arrays;
@ -54,6 +54,11 @@ public class JpaJobDao extends JpaAbstractDao<JobEntity, Job> implements JobDao
return DaoUtil.getData(jobRepository.findByIdForUpdate(jobId.getId())); return DaoUtil.getData(jobRepository.findByIdForUpdate(jobId.getId()));
} }
@Override
public Job findByKey(TenantId tenantId, String key) {
return DaoUtil.getData(jobRepository.findByTenantIdAndKey(tenantId.getId(), key));
}
@Override @Override
public boolean existsByKeyAndStatusOneOf(String key, JobStatus... statuses) { public boolean existsByKeyAndStatusOneOf(String key, JobStatus... statuses) {
return jobRepository.existsByKeyAndStatusIn(key, Arrays.stream(statuses).toList()); return jobRepository.existsByKeyAndStatusIn(key, Arrays.stream(statuses).toList());