aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/queue/TaskDao.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/trygvis/queue/TaskDao.java')
-rw-r--r--src/main/java/io/trygvis/queue/TaskDao.java28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/main/java/io/trygvis/queue/TaskDao.java b/src/main/java/io/trygvis/queue/TaskDao.java
index 9adec8f..5d77a41 100644
--- a/src/main/java/io/trygvis/queue/TaskDao.java
+++ b/src/main/java/io/trygvis/queue/TaskDao.java
@@ -9,12 +9,10 @@ import java.sql.Types;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
+import java.util.EnumMap;
import java.util.List;
-import static io.trygvis.queue.Task.TaskState;
-import static io.trygvis.queue.Task.TaskState.valueOf;
-import static io.trygvis.queue.Task.argumentsToString;
-import static io.trygvis.queue.Task.stringToArguments;
+import static io.trygvis.queue.Task.*;
public class TaskDao {
@@ -57,11 +55,12 @@ public class TaskDao {
}
}
- public List<Task> findByQueueAndState(String queue, TaskState state) throws SQLException {
- try (PreparedStatement stmt = c.prepareStatement("SELECT " + fields + " FROM task WHERE queue=? AND state=?")) {
+ public List<Task> findByQueueAndState(String queue, TaskState state, long limit) throws SQLException {
+ try (PreparedStatement stmt = c.prepareStatement("SELECT " + fields + " FROM task WHERE queue=? AND state=? LIMIT ?")) {
int i = 1;
stmt.setString(i++, queue);
- stmt.setString(i, state.name());
+ stmt.setString(i++, state.name());
+ stmt.setLong(i, limit);
ResultSet rs = stmt.executeQuery();
List<Task> list = new ArrayList<>();
while (rs.next()) {
@@ -71,6 +70,19 @@ public class TaskDao {
}
}
+ public QueueStats findQueueStatsByName(String queue) throws SQLException {
+ try (PreparedStatement stmt = c.prepareStatement("SELECT state, COUNT(id) FROM task WHERE queue=? GROUP BY state")) {
+ int i = 1;
+ stmt.setString(i, queue);
+ ResultSet rs = stmt.executeQuery();
+ EnumMap<TaskState, Long> states = new EnumMap<>(TaskState.class);
+ while (rs.next()) {
+ states.put(TaskState.valueOf(rs.getString(1)), rs.getLong(2));
+ }
+ return new QueueStats(queue, states);
+ }
+ }
+
public int update(Task task) throws SQLException {
try (PreparedStatement stmt = c.prepareStatement("UPDATE task SET state=?, scheduled=?, last_run=?, run_count=?, completed=? WHERE id=?")) {
int i = 1;
@@ -108,7 +120,7 @@ public class TaskDao {
rs.getLong(i++),
rs.getLong(i++),
rs.getString(i++),
- TaskState.valueOf(rs.getString(i++).trim()),
+ TaskState.valueOf(rs.getString(i++)),
rs.getTimestamp(i++),
rs.getTimestamp(i++),
rs.getInt(i++),