2023-05-26 01:39:50 +02:00
|
|
|
module App.UserPublic where
|
|
|
|
|
|
|
|
import Prelude
|
|
|
|
|
2023-06-04 01:24:05 +02:00
|
|
|
import Data.Maybe
|
|
|
|
|
2023-05-26 01:39:50 +02:00
|
|
|
import Data.Codec.Argonaut (JsonCodec)
|
|
|
|
import Data.Codec.Argonaut as CA
|
|
|
|
import Data.Codec.Argonaut.Record as CAR
|
|
|
|
import Data.Newtype (class Newtype)
|
|
|
|
|
2023-05-27 12:26:03 +02:00
|
|
|
-- | Currently not the real type.
|
|
|
|
-- | Lacks 'profile' and 'date_registration' attributes.
|
|
|
|
-- type UserPublic row = { login :: String, uid :: Int | row }
|
|
|
|
-- TODO: add profile :: JSON any, date_registration :: Maybe Time
|
2023-06-04 01:24:05 +02:00
|
|
|
type UserPublic = { login :: String, uid :: Int, date_registration :: Maybe String }
|
2023-05-26 01:39:50 +02:00
|
|
|
|
|
|
|
-- | UserPublic.codec can be used to parse and encode public user info,
|
|
|
|
-- | which can be exchanged in different messages.
|
|
|
|
codec :: JsonCodec UserPublic
|
2023-06-03 03:50:54 +02:00
|
|
|
codec = CA.object "UserPublic" (CAR.record { "login": CA.string
|
|
|
|
, "uid": CA.int
|
2023-06-04 01:24:05 +02:00
|
|
|
, "date_registration": CAR.optional CA.string })
|
|
|
|
|
|
|
|
-- {"user":{"login":"a","uid": 1003,"date_registration":"2023-06-03T03:32:10+02:00"}}
|