telega-0.1.6: Network/Telegram/API/Bot/Property/Identifiable.hs
module Network.Telegram.API.Bot.Property.Identifiable (Identifiable (..), Identificator) where
import "base" Data.Int (Int, Int64)
import Network.Telegram.API.Bot.Object (Object)
import Network.Telegram.API.Bot.Object.Update (Update (Query, Membership, Incoming))
import Network.Telegram.API.Bot.Object.Update.Message (Message (Direct, Forward))
import Network.Telegram.API.Bot.Object.Update.Message.Origin (Origin (Private, Group, Supergroup, Channel))
import Network.Telegram.API.Bot.Object.Sender (Sender (Bot, User))
type family Identificator o = i
class Object o => Identifiable o where
{-# MINIMAL identificator #-}
identificator :: o -> Identificator o
type instance Identificator Message = Int
type instance Identificator Origin = Int64
type instance Identificator Sender = Int
type instance Identificator Update = Int
instance Identifiable Message where
identificator (Direct i _ _) = i
identificator (Forward i _ _) = i
instance Identifiable Origin where
identificator (Private i _) = i
identificator (Group i _ _) = i
identificator (Supergroup i _ _) = i
identificator (Channel i _) = i
instance Identifiable Sender where
identificator (Bot i _ _ _ _) = i
identificator (User i _ _ _ _) = i
instance Identifiable Update where
identificator (Query i _) = i
identificator (Membership i _) = i
identificator (Incoming i _) = i