module Calamity.Types.Model.Channel.DM
( DMChannel(..) ) where
import Calamity.Internal.AesonThings
import Calamity.Internal.Utils ()
import {-# SOURCE #-} Calamity.Types.Model.Channel
import {-# SOURCE #-} Calamity.Types.Model.Channel.Message
import Calamity.Types.Model.User
import Calamity.Types.Snowflake
import Data.Aeson
import Data.Time
import Data.Vector.Unboxed ( Vector )
import GHC.Generics
import TextShow
import qualified TextShow.Generic as TSG
data DMChannel = DMChannel
{ id :: Snowflake DMChannel
, lastMessageID :: Maybe (Snowflake Message)
, lastPinTimestamp :: Maybe UTCTime
, recipients :: Vector (Snowflake User)
}
deriving ( Show, Eq, Generic )
deriving ( TextShow ) via TSG.FromGeneric DMChannel
deriving ( FromJSON, ToJSON ) via CalamityJSON DMChannel
deriving ( HasID DMChannel ) via HasIDField "id" DMChannel
deriving ( HasID Channel ) via HasIDFieldCoerce' "id" DMChannel