2013-08-23 2 views
3

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

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. Ценю вашу помощь!

Спасибо,

ответ

5

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

res <- runDB $ rawQuery sql [] $$ CL.map (convertFromPersistent) =$ CL.consume 
Смежные вопросы