yesod-pagination 0.1.0.0 → 0.2.0.0
raw patch · 3 files changed
+13/−12 lines, 3 files
Files
- src/Yesod/Paginate.hs +9/−8
- tests/main.hs +3/−3
- yesod-pagination.cabal +1/−1
src/Yesod/Paginate.hs view
@@ -23,6 +23,7 @@ import qualified Data.Text.Read as R import Database.Esqueleto import Database.Esqueleto.Internal.Language+import Database.Esqueleto.Internal.Sql import Prelude import Text.Shakespeare.Text import Yesod hiding (Value)@@ -41,24 +42,24 @@ -- | Returned by 'paginate' and friends. data Page r = Page- { pageResults :: [Entity r] -- ^ Returned entities.+ { pageResults :: [r] -- ^ Returned entities. , pageCount :: Int64 -- ^ Total number of pages. This will be at minimum 1, even for an empty result set. , nextPage :: Maybe Text -- ^ Link to next page, pre-rendered. , previousPage :: Maybe Text -- ^ Link to previous page, pre-rendered. } deriving (Eq, Read, Show) -- | Paginate a model using default options - nothing special.-paginate :: (PersistEntity r, RenderRoute site, YesodPersist site,- YesodPersistBackend site ~ SqlPersistT,- PersistEntityBackend r ~ SqlBackend)+paginate :: (From SqlQuery SqlExpr SqlBackend a, RenderRoute site,+ YesodPersist site, SqlSelect a r,+ YesodPersistBackend site ~ SqlPersistT) => HandlerT site IO (Page r) -- ^ Returned page. paginate = paginateWith return -- | Paginate a model, given an esqueleto query.-paginateWith :: (PersistEntity r, From SqlQuery SqlExpr SqlBackend t,+paginateWith :: (From SqlQuery SqlExpr SqlBackend t, SqlSelect a r, RenderRoute site, YesodPersist site, YesodPersistBackend site ~ SqlPersistT)- => (t -> SqlQuery (SqlExpr (Entity r))) -- ^ SQL query.+ => (t -> SqlQuery a) -- ^ SQL query. -> HandlerT site IO (Page r) -- ^ Returned page. paginateWith sel = do params <- liftM2 (\a b -> fst a ++ reqGetParams b)@@ -73,11 +74,11 @@ paginateWithConfig def { pageSize, currentPage } sel -- | Paginate a model, given a configuration and an esqueleto query.-paginateWithConfig :: (PersistEntity r, From SqlQuery SqlExpr SqlBackend t,+paginateWithConfig :: (From SqlQuery SqlExpr SqlBackend t, SqlSelect a r, RenderRoute site, YesodPersist site, YesodPersistBackend site ~ SqlPersistT) => PageConfig -- ^ Preferred config.- -> (t -> SqlQuery (SqlExpr (Entity r))) -- ^ SQL query.+ -> (t -> SqlQuery a) -- ^ SQL query. -> HandlerT site IO (Page r) -- ^ Returned page. paginateWithConfig c sel = do let filterStmt u = limit (pageSize c) >> return u
tests/main.hs view
@@ -44,7 +44,7 @@ getItemsR :: HandlerT TestApp IO TypedContent getItemsR = do- (items :: Page Item) <- paginate+ (items :: Page (Entity Item)) <- paginate selectRep . provideRep $ return [stext|#{show items}|] main :: IO ()@@ -88,11 +88,11 @@ cp <- getPage liftIO $ length (pageResults cp) `shouldBe` 5 -getPage :: YesodExample TestApp (Page Item)+getPage :: YesodExample TestApp (Page (Entity Item)) getPage = withResponse $ \SResponse { simpleBody } -> return $ read (B.toString simpleBody) -wantPage :: Page Item -> YesodExample TestApp ()+wantPage :: Page (Entity Item) -> YesodExample TestApp () wantPage p = do pg <- getPage liftIO $ pg `shouldBe` p
yesod-pagination.cabal view
@@ -1,5 +1,5 @@ name: yesod-pagination-version: 0.1.0.0+version: 0.2.0.0 synopsis: Pagination in Yesod description: Easy pagination for Yesod. homepage: https://github.com/joelteon/yesod-pagination