package me.hao0.antares.store.dao.impl; import me.hao0.antares.common.model.Job; import me.hao0.antares.store.dao.JobDao; import me.hao0.antares.store.support.RedisKeys; import org.springframework.stereotype.Repository; import java.util.List; /** * The job dao implements * Author: haolin * Email: haolin.h0@gmail.com */ @Repository public class JobDaoImpl extends RedisDao<Job> implements JobDao { @Override public Boolean bindApp(Long appId, Long jobId) { String appJobsKey = RedisKeys.keyOfAppJobs(appId); return redis.opsForList() .leftPush(appJobsKey, jobId.toString()) > 0L; } @Override public Boolean unbindApp(Long appId, Long jobId) { String appJobsKey = RedisKeys.keyOfAppJobs(appId); return redis.opsForList().remove(appJobsKey, 1, jobId.toString()) > 0L; } @Override public Boolean indexJobClass(Long appId, Long jobId, String clazz) { String appJobClassesKey = RedisKeys.keyOfAppJobClasses(appId); redis.opsForHash().put(appJobClassesKey, clazz, jobId.toString()); return Boolean.TRUE; } @Override public Job findByJobClass(Long appId, String clazz) { Long jobId = findIdByJobClass(appId, clazz); return jobId == null ? null : findById(jobId); } @Override public Long findIdByJobClass(Long appId, String clazz) { String appJobClassesKey = RedisKeys.keyOfAppJobClasses(appId); Object jobIdStr = redis.opsForHash().get(appJobClassesKey, clazz); if (jobIdStr == null) { return null; } return Long.valueOf(jobIdStr.toString()); } @Override public Boolean unIndexJobClass(Long appId, String clazz) { String appJobClassesKey = RedisKeys.keyOfAppJobClasses(appId); redis.opsForHash().delete(appJobClassesKey, clazz); return Boolean.TRUE; } @Override public Long countByAppId(Long appId) { return redis.opsForList().size(RedisKeys.keyOfAppJobs(appId)); } @Override public List<Job> listByAppId(Long appId, Integer offset, Integer limit) { return list(RedisKeys.keyOfAppJobs(appId), offset, limit); } }