package de.otto.edison.jobs.repository; import de.otto.edison.jobs.domain.JobInfo; import de.otto.edison.jobs.domain.JobMessage; import java.time.OffsetDateTime; import java.util.List; import java.util.Optional; public interface JobRepository { Optional<JobInfo> findOne(String jobId); List<JobInfo> findLatest(int maxCount); List<JobInfo> findLatestJobsDistinct(); List<JobInfo> findLatestBy(String type, int maxCount); List<JobInfo> findRunningWithoutUpdateSince(OffsetDateTime timeOffset); List<JobInfo> findAll(); /** * @return all jobs without loading the job messages */ List<JobInfo> findAllJobInfoWithoutMessages(); List<JobInfo> findByType(String jobType); JobInfo createOrUpdate(JobInfo job); void removeIfStopped(String jobId); JobInfo.JobStatus findStatus(String jobId); void appendMessage(String jobId, JobMessage jobMessage); void setJobStatus(String jobId, JobInfo.JobStatus jobStatus); void setLastUpdate(String jobId, OffsetDateTime lastUpdate); long size(); void deleteAll(); }