updated methods

This commit is contained in:
IrynaMatveieva 2025-05-01 11:59:41 +03:00
parent 5f9afd14d3
commit 874d59a706
5 changed files with 13 additions and 13 deletions

View File

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

View File

@ -55,7 +55,7 @@ public class DefaultJobService extends AbstractEntityService implements JobServi
@Transactional
@Override
public Job submitJob(TenantId tenantId, Job job) {
if (jobDao.existsByKeyAndStatusOneOf(job.getKey(), QUEUED, PENDING, RUNNING)) {
if (jobDao.existsByTenantAndKeyAndStatusOneOf(tenantId, job.getKey(), QUEUED, PENDING, RUNNING)) {
throw new IllegalArgumentException("The same job is already queued or running");
}
if (jobDao.existsByTenantIdAndTypeAndStatusOneOf(tenantId, job.getType(), PENDING, RUNNING)) {
@ -188,8 +188,8 @@ public class DefaultJobService extends AbstractEntityService implements JobServi
}
@Override
public Job findJobByKey(TenantId tenantId, String key) {
return jobDao.findByKey(tenantId, key);
public Job findLatestJobByKey(TenantId tenantId, String key) {
return jobDao.findLatestByKey(tenantId, key);
}
private Job findForUpdate(TenantId tenantId, JobId jobId) {

View File

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

View File

@ -45,15 +45,15 @@ public interface JobRepository extends JpaRepository<JobEntity, UUID> {
@Query("SELECT j FROM JobEntity j WHERE j.id = :id")
JobEntity findByIdForUpdate(UUID id);
JobEntity findByTenantIdAndKey(@Param("tenantId") UUID tenantId, @Param("key") String key);
JobEntity findLatestByTenantIdAndKey(UUID tenantId, String key);
boolean existsByKeyAndStatusIn(String key, List<JobStatus> statuses);
boolean existsByTenantIdAndKeyAndStatusIn(UUID tenantId, String key, List<JobStatus> statuses);
boolean existsByTenantIdAndTypeAndStatusIn(UUID tenantId, JobType type, List<JobStatus> statuses);
@Lock(LockModeType.PESSIMISTIC_WRITE) // SELECT FOR UPDATE
@Query("SELECT j FROM JobEntity j WHERE j.tenantId = :tenantId AND j.type = :type " +
"AND j.status = :status ORDER BY j.createdTime ASC, j.id ASC")
"AND j.status = :status ORDER BY j.createdTime ASC, j.id ASC")
JobEntity findOldestByTenantIdAndTypeAndStatusForUpdate(UUID tenantId, JobType type, JobStatus status, Limit limit);
}

View File

@ -55,13 +55,13 @@ public class JpaJobDao extends JpaAbstractDao<JobEntity, Job> implements JobDao
}
@Override
public Job findByKey(TenantId tenantId, String key) {
return DaoUtil.getData(jobRepository.findByTenantIdAndKey(tenantId.getId(), key));
public Job findLatestByKey(TenantId tenantId, String key) {
return DaoUtil.getData(jobRepository.findLatestByTenantIdAndKey(tenantId.getId(), key));
}
@Override
public boolean existsByKeyAndStatusOneOf(String key, JobStatus... statuses) {
return jobRepository.existsByKeyAndStatusIn(key, Arrays.stream(statuses).toList());
public boolean existsByTenantAndKeyAndStatusOneOf(TenantId tenantId, String key, JobStatus... statuses) {
return jobRepository.existsByTenantIdAndKeyAndStatusIn(tenantId.getId(), key, Arrays.stream(statuses).toList());
}
@Override