diff options
Diffstat (limited to 'Omni/Task/Core.hs')
| -rw-r--r-- | Omni/Task/Core.hs | 16 |
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)) |
