package com.gzzm.lobster.run;

import net.cyan.thunwind.annotation.OQL;
import net.cyan.thunwind.dao.GeneralDao;

import java.util.List;

/**
 * Persistence for durable run stream events.
 */
public abstract class RunStreamEventDao extends GeneralDao {

    @OQL("select e from RunStreamEvent e where e.runId=:1 and e.seq > ?2 order by e.seq asc")
    public abstract List<RunStreamEvent> listAfter(String runId, Long afterSeq) throws Exception;

    @OQL("select e from RunStreamEvent e where e.runId=:1 and e.seq > ?2 and e.seq < ?3 order by e.seq asc")
    public abstract List<RunStreamEvent> listAfterBefore(String runId, Long afterSeq, Long beforeSeq) throws Exception;

    @OQL("select max(e.seq) from RunStreamEvent e where e.runId=:1")
    public abstract Long maxSeq(String runId) throws Exception;
}
