packages feed

patrol-0.0.1: src/lib/Patrol/Type/User.hs

module Patrol.Type.User
  ( User(..)
  ) where

import qualified Data.Aeson as Aeson
import qualified Data.Maybe as Maybe
import qualified Data.Text as Text
import qualified Patrol.Utility.Json as Json

data User = User
  { email :: Maybe Text.Text
  , id_ :: Maybe Text.Text
  , ipAddress :: Maybe Text.Text
  , username :: Maybe Text.Text
  } deriving (Eq, Show)

instance Aeson.ToJSON User where
  toJSON request = Aeson.object $ Maybe.catMaybes
    [ Json.pair "email" <$> email request
    , Json.pair "id" <$> id_ request
    , Json.pair "ipAddress" <$> ipAddress request
    , Json.pair "username" <$> username request
    ]