postgresql-simple
提供流式查询的功能,例如
fold
:: (FromRow row, ToRow params)
=> Connection -> Query -> params -> a -> (a -> row -> IO a) -> IO a
我想创建一个充分利用流媒体的管道源。
mySource :: (FromRow row, Monad m) => Source m row
不幸的是,因为IO
出现在 中的逆变位置(我认为?)fold
,我真的很挣扎这些类型。以下类型检查,但在产生值之前折叠整个流。
getConduit :: Connection -> IO (C.ConduitM () Event IO ())
getConduit conn = fold_ conn queryEventRecord CL.sourceNull foo
where
foo :: C.ConduitM () Event IO () -> Event -> IO (C.ConduitM () Event IO ())
foo cond evt = pure (cond >> C.yield evt)
任何有关如何实现这一点的指示将不胜感激!谢谢!