module Common.Model.User
  ( UserId
  , User(..)
  , findUser
  ) where

import           Data.Aeson   (FromJSON, ToJSON)
import           Data.Int     (Int64)
import qualified Data.List    as L
import           Data.Text    (Text)
import           Data.Time    (UTCTime)
import           GHC.Generics (Generic)

type UserId = Int64

data User = User
  { _user_id       :: UserId
  , _user_creation :: UTCTime
  , _user_email    :: Text
  , _user_name     :: Text
  } deriving (Show, Generic)

instance FromJSON User
instance ToJSON User

findUser :: UserId -> [User] -> Maybe User
findUser userId users = L.find ((== userId) . _user_id) users