module JetStream.Client
( newJetStream
, JetStream (..)
, JetStreamOption
, withDomain
, withRequestTimeoutMicros
) where
import qualified API as Nats
import JetStream.API (JetStream (..))
import qualified JetStream.Consumer as Consumer
import qualified JetStream.Message as Message
import JetStream.Options
( JetStreamOption
, newJetStreamContext
, withDomain
, withRequestTimeoutMicros
)
import qualified JetStream.Publish as Publish
import qualified JetStream.Stream as Stream
newJetStream :: Nats.Client -> [JetStreamOption] -> JetStream
newJetStream :: Client -> [JetStreamOption] -> JetStream
newJetStream Client
client [JetStreamOption]
options =
let ctx :: JetStreamContext
ctx = Client -> [JetStreamOption] -> JetStreamContext
newJetStreamContext Client
client [JetStreamOption]
options
in JetStream
{ streams :: StreamAPI
streams = JetStreamContext -> StreamAPI
Stream.streamAPI JetStreamContext
ctx
, consumers :: ConsumerAPI
consumers = JetStreamContext -> ConsumerAPI
Consumer.consumerAPI JetStreamContext
ctx
, publisher :: PublishAPI
publisher = JetStreamContext -> PublishAPI
Publish.publishAPI JetStreamContext
ctx
, messages :: MessageAPI
messages = JetStreamContext -> MessageAPI
Message.messageAPI JetStreamContext
ctx
}