summaryrefslogtreecommitdiff
path: root/Omni/Task
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Task')
-rw-r--r--Omni/Task/Core.hs16
1 files changed, 16 insertions, 0 deletions
diff --git a/Omni/Task/Core.hs b/Omni/Task/Core.hs
index d9ea98c..bd70fde 100644
--- a/Omni/Task/Core.hs
+++ b/Omni/Task/Core.hs
@@ -1014,3 +1014,19 @@ logActivity tid stage metadata =
conn
"INSERT INTO task_activity (task_id, stage, message, metadata) VALUES (?, ?, ?, ?)"
(tid, show stage, Nothing :: Maybe Text, metadata)
+
+-- | Get all activities for a task, ordered by timestamp descending
+getActivitiesForTask :: Text -> IO [TaskActivity]
+getActivitiesForTask tid =
+ withDb <| \conn -> do
+ rows <-
+ SQL.query
+ conn
+ "SELECT id, task_id, timestamp, stage, message, metadata \
+ \FROM task_activity WHERE task_id = ? ORDER BY timestamp DESC"
+ (SQL.Only tid) ::
+ IO [(Int, Text, UTCTime, Text, Maybe Text, Maybe Text)]
+ pure [TaskActivity (Just i) taskId ts (readStage stg) msg meta | (i, taskId, ts, stg, msg, meta) <- rows]
+ where
+ readStage :: Text -> ActivityStage
+ readStage s = fromMaybe Claiming (readMaybe (T.unpack s))