grab-form-0.0.0.1: test/Test/OrgRoster/Concepts.hs
{-# OPTIONS_GHC -Wall #-}
module Test.OrgRoster.Concepts where
import Numeric.Natural (Natural)
import Data.Map (Map)
import Data.Text (Text)
newtype OrgId = OrgId Text
deriving (Eq, Show)
newtype OrgMemberName = OrgMemberName Text
deriving (Eq, Show)
-- | A position in an org's member list.
newtype RosterOrdinal = RosterOrdinal Natural
deriving (Show, Eq, Ord)
-- | Whether an org member has permissions to administer the org.
data OrgRole
= OrgRole_Normal -- ^ No, a regular user with no management permission
| OrgRole_Manager -- ^ Yes, this user is an org manager
deriving (Eq, Show)
-- | Whether an org member gets access to Type Classes content.
data OrgContentAccess
= OrgContentAccess_Yes -- ^ Yes, has access to content
| OrgContentAccess_No -- ^ No, the membership does not grant content access
deriving (Eq, Show)
data Roster =
Roster
{ roster_org :: OrgId
, roster_members :: MemberList
}
deriving (Eq, Show)
data MemberList =
MemberList
{ members_existing :: Map RosterOrdinal Modification
, members_new :: [Member]
}
deriving (Eq, Show)
data Modification
= Modification_Update Member
| Modification_Delete
deriving (Eq, Show)
data Member =
Member
{ member_name :: Maybe OrgMemberName
, member_role :: OrgRole
, member_access :: OrgContentAccess
}
deriving (Eq, Show)