updated methods
This commit is contained in:
		
							parent
							
								
									5f9afd14d3
								
							
						
					
					
						commit
						874d59a706
					
				@ -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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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) {
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user