Commit b19e86ef authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[graphql] NUTCTime for gql serialization

parent 79ff0460
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}
module Gargantext.Utils.UTCTime where
import Data.Aeson (FromJSON, ToJSON)
import Data.Either (Either(..))
import Data.Morpheus.Kind (SCALAR)
import Data.Morpheus.Types (GQLType(..), DecodeScalar(..), EncodeScalar(..))
import qualified Data.Morpheus.Types as DMT
import Data.Swagger (ToSchema)
import qualified Data.Text as T
import Data.Time (UTCTime)
import Gargantext.Prelude
import GHC.Generics (Generic)
import Text.Read (readEither)
newtype NUTCTime = NUTCTime UTCTime
deriving (Eq, Show, Generic)
instance DecodeScalar NUTCTime where
decodeScalar (DMT.String x) = case (readEither $ T.unpack x) of
Right r -> pure $ NUTCTime r
Left err -> Left $ T.pack err
decodeScalar _ = Left "Invalid value for NUTCTime"
instance EncodeScalar NUTCTime where
encodeScalar (NUTCTime x) = DMT.String $ T.pack $ show x
instance GQLType NUTCTime where
type KIND NUTCTime = SCALAR
instance FromJSON NUTCTime
instance ToJSON NUTCTime
instance ToSchema NUTCTime
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment