diff options
author | stuebinm | 2022-06-06 00:21:19 +0200 |
---|---|---|
committer | stuebinm | 2022-06-06 00:21:19 +0200 |
commit | 47ec9303325e66dde548493f0319eaece707aff4 (patch) | |
tree | 3cf9fdbfec704128f1c97ee4014b1b57823d8edb /lib/Server | |
parent | c30759d9878127d98c451e62f052c6b30fd3a1ec (diff) |
better aeson generics
(template haskell doesn't work well with type families, unfortunately)
Diffstat (limited to '')
-rw-r--r-- | lib/Server.hs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/Server.hs b/lib/Server.hs index 0ad451d..7a79aa8 100644 --- a/lib/Server.hs +++ b/lib/Server.hs @@ -26,7 +26,7 @@ import qualified Data.UUID.V4 as UUID import qualified Data.UUID as UUID import Data.UUID (UUID) import Control.Concurrent.STM -import Data.Aeson (ToJSON, FromJSON, ToJSONKey) +import Data.Aeson (ToJSON (toJSON), FromJSON (parseJSON), ToJSONKey, genericToJSON, genericParseJSON) import Servant.Server (Handler) import GHC.Generics (Generic) import GHC.Foreign (withCStringsLen) @@ -40,7 +40,12 @@ data TrainPing = TrainPing , pingLong :: Float , pingDelay :: Int , pingTimestamp :: Time - } deriving (Generic, FromJSON, ToJSON) + } deriving (Generic) + +instance FromJSON TrainPing where + parseJSON = genericParseJSON (aesonOptions "ping") +instance ToJSON TrainPing where + toJSON = genericToJSON (aesonOptions "ping") type KnownTrips = TVar (Map Token [TrainPing]) |