是否可以在Yesod中使用defaultLayout和源(管道)

时间:2018-09-13 11:20:05

标签: haskell yesod conduit

我正在尝试优化Yesod应用程序,以使其在恒定空间中运行。 例如,我正在读取数据库表,并将其显示为HTML表。在处理完整个表之前,我应该能够开始发送第一行。我知道我可以使用selectSource(读取数据库)和responseSourceresponseSourceDB来做到这一点,但是我如何使用defaultLayout将其包装在默认布局中? >

此刻,我必须消耗全部源代码才能一次性生成列表和HTML。例如,假设我有(可能无法编译)

   data User = {name :: Text, email :: Text } deriving ...

   userSource = selectSource [] [Asc UserName]
   userToTR user = [whamlet|
             <tr>
                  <td>#{user name}
                  <td>#{user email}


   getUsers :: Handler Html
   getUsers = do
      rows <- runConduit $ userSource =$= mapC userToTR =$= sinkList
      table = [whamlet|
         <table>
           <tr>
             <th>Name
             <th>Email
           ^{mconcat rows}

       defaultLayout table

如何将其转换为流式处理的行? (这只是一个解释问题的虚构示例,实际问题要复杂得多)。

0 个答案:

没有答案