servant-auth-token-0.4.0.0: src/Servant/Server/Auth/Token/Pagination.hs
{-|
Module : Servant.Server.Auth.Token.Monad
Description : Helpers for pagination implementation
Copyright : (c) Anton Gushcha, 2016
License : MIT
Maintainer : ncrashed@gmail.com
Stability : experimental
Portability : Portable
-}
module Servant.Server.Auth.Token.Pagination(
pagination
) where
import Data.Maybe
import Servant.Server.Auth.Token.Config
import Servant.Server.Auth.Token.Monad
import Servant.API.Auth.Token.Pagination
-- | Helper that implements pagination logic
pagination :: AuthHandler m
=> Maybe Page -- ^ Parameter of page
-> Maybe PageSize -- ^ Parameter of page size
-> (Page -> PageSize -> m a) -- ^ Handler
-> m a
pagination pageParam pageSizeParam f = do
ps <- getsConfig defaultPageSize
let page = fromMaybe 0 pageParam
pageSize = fromMaybe ps pageSizeParam
f page pageSize