{-# LANGUAGE NamedFieldPuns #-} module Data.Morpheus.Types.Internal.WebSocket ( GQLClient(..) , ClientID , ClientSession(..) ) where import Data.Semigroup ( (<>) ) import Data.Text ( Text ) import Data.UUID ( UUID ) import Network.WebSockets ( Connection ) -- MORPHEUS import Data.Morpheus.Types.Internal.Resolving ( SubEvent ) type ClientID = UUID data ClientSession m e = ClientSession { sessionId :: Text , sessionSubscription :: SubEvent m e } instance (Show e) => Show (ClientSession m e ) where show ClientSession { sessionId } = "GQLSession { id: " <> show sessionId <> ", sessions: " <> "" <> " }" data GQLClient m e = GQLClient { clientID :: ClientID , clientConnection :: Connection , clientSessions :: [ClientSession m e ] } instance (Show e) => Show (GQLClient m e) where show GQLClient { clientID, clientSessions } = "GQLClient {id:" <> show clientID <> ", sessions:" <> show clientSessions <> "}"