summaryrefslogtreecommitdiff
path: root/Omni/Task
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Task')
-rw-r--r--Omni/Task/Core.hs14
1 files changed, 14 insertions, 0 deletions
diff --git a/Omni/Task/Core.hs b/Omni/Task/Core.hs
index b28b402..4f7a3d3 100644
--- a/Omni/Task/Core.hs
+++ b/Omni/Task/Core.hs
@@ -4,6 +4,7 @@
{-# LANGUAGE NoImplicitPrelude #-}
-- : dep sqids
+-- : dep http-api-data
module Omni.Task.Core where
import Alpha
@@ -22,6 +23,7 @@ import GHC.Generics ()
import System.Directory (createDirectoryIfMissing, doesFileExist)
import System.Environment (lookupEnv)
import System.IO.Unsafe (unsafePerformIO)
+import Web.HttpApiData (FromHttpApiData (..))
import qualified Web.Sqids as Sqids
-- Core data types
@@ -113,6 +115,18 @@ instance ToJSON RetryContext
instance FromJSON RetryContext
+-- HTTP API Instances (for Servant query params)
+
+instance FromHttpApiData Status where
+ parseQueryParam t = case readMaybe (T.unpack t) of
+ Just s -> Right s
+ Nothing -> Left ("Invalid status: " <> t)
+
+instance FromHttpApiData Priority where
+ parseQueryParam t = case readMaybe (T.unpack t) of
+ Just p -> Right p
+ Nothing -> Left ("Invalid priority: " <> t)
+
-- SQLite Instances
instance SQL.FromField TaskType where