Получение данных из rawQuery с помощью Conduits

Я признаю, что не очень хорошо понимаю Conduits, учитывая мои ограниченные знания Haskell. Так что цените, если кто-нибудь может подсказать мне, как выполнить эту задачу: я хотел бы получить результат действия rawQuery и сохранить его в переменной, которую затем я могу снова использовать в своем файле Hamlet. Например:

let sql = "SELECT sum(value) as total, category FROM person GROUP BY category ORDER BY total desc;"
   --- ??  how to store this runDB output in a variable?
runDB $ rawQuery sql [] $$ CL.map (convertFromPersistent) 
where 
    convertFromPersistent [] = Nothing
    convertFromPersistent [PersistInt64 sum,PersistInt64 category] = Just (sum,category)
    convertFromPersistent _ = Nothing

Когда я делаю

runDB $ rawQuery sql [] $$ CL.mapM_ (liftIO. print. convertFromPersistent) 

Я вижу вывод в файле журнала. Однако я хотел бы направить вывод в массив кортежей, чтобы я мог работать с ним в своем файле Hamlet. Ценю вашу помощь!

Спасибо,


person Ecognium    schedule 23.08.2013    source источник


Ответы (1)


Методом проб и ошибок я нашел, что это работает:

res <- runDB $ rawQuery sql [] $$ CL.map (convertFromPersistent) =$ CL.consume
person Ecognium    schedule 23.08.2013