packages feed

morpheus-graphql-app-0.17.0: src/Data/Morpheus/App/Internal/Resolving/Event.hs

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Data.Morpheus.App.Internal.Resolving.Event
  ( EventHandler (..),
    ResponseEvent (..),
  )
where

import Data.Morpheus.Types.IO
  ( GQLResponse,
  )

class EventHandler e where
  type Channel e
  getChannels :: e -> [Channel e]

data ResponseEvent event (m :: * -> *)
  = Publish event
  | Subscribe
      { subChannel :: Channel event,
        subRes :: event -> m GQLResponse
      }