calamity-0.1.30.2: Calamity/Types/Model/Guild/Role.hs
-- | Guild roles
module Calamity.Types.Model.Guild.Role (Role (..)) where
import Calamity.Internal.AesonThings
import Calamity.Internal.IntColour
import Calamity.Types.Model.Guild.Permissions
import Calamity.Types.Snowflake
import Data.Aeson
import Data.Colour
import Data.Text.Lazy (Text)
import GHC.Generics
import Control.DeepSeq (NFData (rnf), rwhnf)
import TextShow
import qualified TextShow.Generic as TSG
import Calamity.Internal.OverriddenVia
data Role' = Role'
{ id :: Snowflake Role
, name :: Text
, color :: IntColour
, hoist :: Bool
, position :: Int
, permissions :: Permissions
, managed :: Bool
, mentionable :: Bool
}
deriving (Generic)
deriving (TextShow) via TSG.FromGeneric Role'
deriving (ToJSON, FromJSON) via CalamityJSON Role'
data Role = Role
{ id :: Snowflake Role
, name :: Text
, color :: Colour Double
, hoist :: Bool
, position :: Int
, permissions :: Permissions
, managed :: Bool
, mentionable :: Bool
}
deriving (Eq, Show, Generic)
deriving (TextShow, FromJSON, ToJSON) via OverriddenVia Role Role'
deriving (HasID Role) via HasIDField "id" Role
instance NFData Role where
rnf (Role id name color hoist position permissions managed mentionable) =
rnf id `seq` rnf name `seq` rwhnf color `seq` rnf hoist `seq` rnf position
`seq` rnf permissions
`seq` rnf managed
`seq` rnf mentionable