{-# LANGUAGE DeriveGeneric #-}

-- |
-- Module      : Docs.UserRef
-- Description : Reference to a User
-- License     : AGPL-3
-- Maintainer  : stu235271@mail.uni-kiel.de
--               stu236925@mail.uni-kiel.de
--
-- This module defines a reference to a user.
module Docs.UserRef (UserRef (..)) where

import Data.Aeson (FromJSON, ToJSON)
import Data.OpenApi (ToSchema)
import Data.Text (Text)

import GHC.Generics (Generic)

import UserManagement.User (UserID)

-- A reference to a user.
data UserRef = UserRef
    { UserRef -> UserID
identifier :: UserID
    -- ^ the users id
    , UserRef -> Text
name :: Text
    -- ^ the name of the user
    }
    deriving (UserRef -> UserRef -> Bool
(UserRef -> UserRef -> Bool)
-> (UserRef -> UserRef -> Bool) -> Eq UserRef
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UserRef -> UserRef -> Bool
== :: UserRef -> UserRef -> Bool
$c/= :: UserRef -> UserRef -> Bool
/= :: UserRef -> UserRef -> Bool
Eq, Int -> UserRef -> ShowS
[UserRef] -> ShowS
UserRef -> String
(Int -> UserRef -> ShowS)
-> (UserRef -> String) -> ([UserRef] -> ShowS) -> Show UserRef
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UserRef -> ShowS
showsPrec :: Int -> UserRef -> ShowS
$cshow :: UserRef -> String
show :: UserRef -> String
$cshowList :: [UserRef] -> ShowS
showList :: [UserRef] -> ShowS
Show, (forall x. UserRef -> Rep UserRef x)
-> (forall x. Rep UserRef x -> UserRef) -> Generic UserRef
forall x. Rep UserRef x -> UserRef
forall x. UserRef -> Rep UserRef x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. UserRef -> Rep UserRef x
from :: forall x. UserRef -> Rep UserRef x
$cto :: forall x. Rep UserRef x -> UserRef
to :: forall x. Rep UserRef x -> UserRef
Generic)

instance ToJSON UserRef

instance FromJSON UserRef

instance ToSchema UserRef