Я пытаюсь использовать функцию MergeSources в stm -роводит , которая имеет следующую подпись:
mergeSources :: (MonadResource mi, MonadIO mo, MonadUnliftIO mi)
=> [ConduitT () a mi ()] -- ^ The sources to merge.
-> Int -- ^ The bound of the intermediate channel.
-> mo (ConduitT () a mi ())
У меня есть источники, основанные на IO напрямую, и я незнаю, как двигаться по этой ми Монаде, которую я считаю ResourceT:
, поэтому у меня есть источники со следующей подписью:
ConduitT () (Connection,WorkspaceId) IO ()
, и я хотел бы вместо этой подписи:
ConduitT () (Connection,WorkspaceId) (ResourceT IO) ()
несмотря на то, что у меня нет ресурсов для обработки этих действий (у меня есть соединение, но оно глобальное, вот что они рекомендуют ...), я приведу пример функции, которую я хочу использовать
streamAllWorkspaceAlreadyCreated :: Connection -> ConduitT () (Connection,WorkspaceId) IO ()
streamAllWorkspaceAlreadyCreated eventStoreConnection = do
yield eventStoreConnection
.| WorkspaceStream.streamAll
.| WorkspaceStream.discardCorruptedStreams
.| mapC (\workSpaceId -> (eventStoreConnection,workSpaceId))