package com.hubspot.blazar.data.dao;
import java.util.Set;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import com.hubspot.blazar.data.queue.QueueItem;
import com.hubspot.rosetta.jdbi.BindWithRosetta;
public interface QueueItemDao {
@SqlQuery("SELECT * FROM queue_items WHERE completedTimestamp IS NULL AND desiredExecutionTimestamp <= NOW()")
Set<QueueItem> getItemsReadyToExecute();
@SqlQuery("SELECT count(*) FROM queue_items WHERE id = :id AND completedTimestamp IS NULL")
boolean isItemStillQueued(@BindWithRosetta QueueItem queueItem);
@GetGeneratedKeys
@SqlUpdate("INSERT INTO queue_items (type, item) VALUES (:type, :item)")
int insert(@BindWithRosetta QueueItem queueItem);
@SqlUpdate("UPDATE queue_items SET retryCount = retryCount + 1, desiredExecutionTimestamp = TIMESTAMPADD(SECOND, 10, NOW()) WHERE id = :id")
int increaseRetryCounter(@BindWithRosetta QueueItem queueItem);
@SqlUpdate("UPDATE queue_items SET completedTimestamp = NOW() WHERE id = :id")
int complete(@BindWithRosetta QueueItem queueItem);
}