module Hasql.Streaming ( streamingQuery, ) where -- streaming import Streaming import Streaming.Prelude as Streaming -- hasql import Hasql.Statement -- hasql-transaction-io import Hasql.CursorTransactionIO -- hasql-streaming import Hasql.Streams -- | Run a `Statement`, but return a `Stream` instead of a list streamingQuery :: Statement params [a] -> params -> Stream (Of a) (CursorTransactionIO s) () streamingQuery stmt params = cursorStreamQuery stmt params foldStreamingStream foldStreamingStream :: CursorStreamFold s a (Stream (Of a) (CursorTransactionIO s) ()) foldStreamingStream step init = lift init >>= Streaming.unfoldr (fmap maybeToEither . step) maybeToEither :: Maybe a -> Either () a maybeToEither = maybe (Left ()) Right