{-# LANGUAGE DeriveGeneric #-} module ChatWork.Types.Contacts ( Contacts , Contact(..) ) where import ChatWork.Utils (strLength) import Data.Aeson (FromJSON (..), ToJSON (..), genericParseJSON, genericToJSON) import Data.Aeson.Casing (aesonDrop, snakeCase) import Data.Text (Text) import GHC.Generics (Generic) type Contacts = [Contact] data Contact = Contact { contactToAccountId :: Int , contactToRoomId :: Int , contactToName :: Text , contactToChatworkId :: Text , contactToOrganizationId :: Int , contactToOrganizationName :: Text , contactToDepartment :: Text , contactToAvatarImageUrl :: Text } deriving (Eq, Show, Generic) instance ToJSON Contact where toJSON = genericToJSON $ aesonDrop (strLength "contactTo") snakeCase instance FromJSON Contact where parseJSON = genericParseJSON $ aesonDrop (strLength "contactTo") snakeCase