calamity-0.5.0.0: Calamity/Types/Model/Voice/VoiceRegion.hs
{-# LANGUAGE TemplateHaskell #-}
-- | Voice regions
module Calamity.Types.Model.Voice.VoiceRegion (VoiceRegion (..)) where
import Calamity.Types.Snowflake
import Data.Aeson ((.:))
import qualified Data.Aeson as Aeson
import Data.Text (Text)
import Optics.TH
import TextShow.TH
import Calamity.Internal.Utils
data VoiceRegion = VoiceRegion
{ id :: Snowflake VoiceRegion
, name :: Text
, vip :: Bool
, optimal :: Bool
, deprecated :: Bool
, custom :: Bool
}
deriving (Show, Eq)
deriving (Aeson.ToJSON) via CalamityToJSON VoiceRegion
instance CalamityToJSON' VoiceRegion where
toPairs VoiceRegion {..} =
[ "id" .= id
, "name" .= name
, "vip" .= vip
, "optimal" .= optimal
, "deprecated" .= deprecated
, "custom" .= custom
]
instance Aeson.FromJSON VoiceRegion where
parseJSON = Aeson.withObject "VoiceRegion" $ \v ->
VoiceRegion
<$> v .: "id"
<*> v .: "name"
<*> v .: "vip"
<*> v .: "optimal"
<*> v .: "deprecated"
<*> v .: "custom"
$(deriveTextShow ''VoiceRegion)
$(makeFieldLabelsNoPrefix ''VoiceRegion)