52 lines
1 KiB
Haskell
52 lines
1 KiB
Haskell
|
{-# LANGUAGE DeriveGeneric #-}
|
||
|
{-# LANGUAGE OverloadedStrings #-}
|
||
|
module Types.User where
|
||
|
|
||
|
import GHC.Generics
|
||
|
|
||
|
import Data.Time.Calendar (Day)
|
||
|
|
||
|
import Data.Aeson
|
||
|
|
||
|
import qualified Data.Text as T
|
||
|
|
||
|
-- internal imports
|
||
|
|
||
|
import Types.Auth
|
||
|
|
||
|
data User
|
||
|
= User
|
||
|
{ userId :: Int
|
||
|
, userIdent :: T.Text
|
||
|
, userBalance :: Int
|
||
|
, userTimeStamp :: Day
|
||
|
, userEmail :: Maybe T.Text
|
||
|
, userAvatar :: Maybe Int
|
||
|
, userSalt :: AuthSalt
|
||
|
, userHash :: Maybe AuthHash
|
||
|
, userAlgo :: Maybe Int
|
||
|
}
|
||
|
deriving (Generic, Show)
|
||
|
|
||
|
instance ToJSON User where
|
||
|
toEncoding (User id ident balance ts email avatar _ _ _) =
|
||
|
pairs
|
||
|
( "userId" .= id
|
||
|
<> "userIdent" .= ident
|
||
|
<> "userAvatar" .= avatar
|
||
|
)
|
||
|
|
||
|
instance FromJSON User
|
||
|
|
||
|
data UserSubmit = UserSubmit
|
||
|
{ userSubmitIdent :: T.Text
|
||
|
, userSubmitEmail :: Maybe T.Text
|
||
|
--, userSubmitPin :: Maybe T.Text
|
||
|
}
|
||
|
deriving (Generic, Show)
|
||
|
|
||
|
instance ToJSON UserSubmit where
|
||
|
toEncoding = genericToEncoding defaultOptions
|
||
|
|
||
|
instance FromJSON UserSubmit
|