packages feed

calamity-0.2.0.0: Calamity/Types/Model/Guild/Invite.hs

-- | Guild invites
module Calamity.Types.Model.Guild.Invite (Invite (..)) where

import Calamity.Internal.AesonThings
import Calamity.Types.Model.Channel
import Calamity.Types.Model.Guild.Guild
import Calamity.Types.Model.User
import Calamity.Types.Snowflake

import Data.Aeson
import Data.Text (Text)

import GHC.Generics

import TextShow
import qualified TextShow.Generic as TSG

data Invite = Invite
  { code :: Text
  , guild :: Maybe (Partial Guild)
  , channel :: Maybe (Partial Channel)
  , targetUser :: Maybe (Snowflake User)
  , targetUserType :: Maybe Int
  , approximatePresenceCount :: Maybe Int
  , approximateMemberCount :: Maybe Int
  }
  deriving (Eq, Show, Generic)
  deriving (TextShow) via TSG.FromGeneric Invite
  deriving (ToJSON) via CalamityJSON Invite
  deriving (FromJSON) via WithSpecialCases '["targetUser" `ExtractFieldFrom` "id"] Invite