{-# LANGUAGE DeriveGeneric #-}
module UserManagement.Group (Group (..), GroupCreate (..), GroupPatch (..), GroupID, GroupOverview (..)) where
import Data.Aeson (FromJSON, ToJSON)
import Data.OpenApi (ToSchema)
import Data.Text (Text)
import GHC.Generics (Generic)
import GHC.Int (Int64)
import qualified UserManagement.User as User
data Group = Group
{ Group -> GroupID
groupID :: GroupID
, Group -> Text
groupName :: Text
, Group -> Maybe Text
groupDescription :: Maybe Text
, Group -> [UserInfo]
groupMembers :: [User.UserInfo]
}
deriving ((forall x. Group -> Rep Group x)
-> (forall x. Rep Group x -> Group) -> Generic Group
forall x. Rep Group x -> Group
forall x. Group -> Rep Group x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Group -> Rep Group x
from :: forall x. Group -> Rep Group x
$cto :: forall x. Rep Group x -> Group
to :: forall x. Rep Group x -> Group
Generic)
instance ToJSON Group
instance ToSchema Group
data GroupOverview = GroupOverview
{ GroupOverview -> GroupID
groupOverviewID :: GroupID
, GroupOverview -> Text
groupOverviewName :: Text
, GroupOverview -> Maybe Text
groupOverviewDescription :: Maybe Text
}
deriving ((forall x. GroupOverview -> Rep GroupOverview x)
-> (forall x. Rep GroupOverview x -> GroupOverview)
-> Generic GroupOverview
forall x. Rep GroupOverview x -> GroupOverview
forall x. GroupOverview -> Rep GroupOverview x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. GroupOverview -> Rep GroupOverview x
from :: forall x. GroupOverview -> Rep GroupOverview x
$cto :: forall x. Rep GroupOverview x -> GroupOverview
to :: forall x. Rep GroupOverview x -> GroupOverview
Generic)
instance ToSchema GroupOverview
instance ToJSON GroupOverview
data GroupCreate = GroupCreate
{ GroupCreate -> Text
groupCreateName :: Text
, GroupCreate -> Maybe Text
groupCreateDescription :: Maybe Text
, GroupCreate -> Maybe [UserID]
groupCreateUsers :: Maybe [User.UserID]
}
deriving (GroupCreate -> GroupCreate -> Bool
(GroupCreate -> GroupCreate -> Bool)
-> (GroupCreate -> GroupCreate -> Bool) -> Eq GroupCreate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: GroupCreate -> GroupCreate -> Bool
== :: GroupCreate -> GroupCreate -> Bool
$c/= :: GroupCreate -> GroupCreate -> Bool
/= :: GroupCreate -> GroupCreate -> Bool
Eq, (forall x. GroupCreate -> Rep GroupCreate x)
-> (forall x. Rep GroupCreate x -> GroupCreate)
-> Generic GroupCreate
forall x. Rep GroupCreate x -> GroupCreate
forall x. GroupCreate -> Rep GroupCreate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. GroupCreate -> Rep GroupCreate x
from :: forall x. GroupCreate -> Rep GroupCreate x
$cto :: forall x. Rep GroupCreate x -> GroupCreate
to :: forall x. Rep GroupCreate x -> GroupCreate
Generic)
instance FromJSON GroupCreate
instance ToSchema GroupCreate
data GroupPatch = GroupPatch
{ GroupPatch -> Maybe Text
patchName :: Maybe Text
, GroupPatch -> Maybe (Maybe Text)
patchDescription :: Maybe (Maybe Text)
}
deriving (GroupPatch -> GroupPatch -> Bool
(GroupPatch -> GroupPatch -> Bool)
-> (GroupPatch -> GroupPatch -> Bool) -> Eq GroupPatch
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: GroupPatch -> GroupPatch -> Bool
== :: GroupPatch -> GroupPatch -> Bool
$c/= :: GroupPatch -> GroupPatch -> Bool
/= :: GroupPatch -> GroupPatch -> Bool
Eq, (forall x. GroupPatch -> Rep GroupPatch x)
-> (forall x. Rep GroupPatch x -> GroupPatch) -> Generic GroupPatch
forall x. Rep GroupPatch x -> GroupPatch
forall x. GroupPatch -> Rep GroupPatch x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. GroupPatch -> Rep GroupPatch x
from :: forall x. GroupPatch -> Rep GroupPatch x
$cto :: forall x. Rep GroupPatch x -> GroupPatch
to :: forall x. Rep GroupPatch x -> GroupPatch
Generic)
instance FromJSON GroupPatch
instance ToSchema GroupPatch
type GroupID = Int64