module Servant.Util.Dummy.Pagination
    ( paginate
    ) where

import qualified Data.List as L
import Universum

import Servant.Util.Combinators.Pagination
import Servant.Util.Internal.Util

paginate :: PaginationSpec -> [a] -> [a]
paginate :: PaginationSpec -> [a] -> [a]
paginate PaginationSpec{Natural
Maybe (Positive Natural)
psLimit :: PaginationSpec -> Maybe (Positive Natural)
psOffset :: PaginationSpec -> Natural
psLimit :: Maybe (Positive Natural)
psOffset :: Natural
..} =
    ([a] -> [a])
-> (Positive Natural -> [a] -> [a])
-> Maybe (Positive Natural)
-> [a]
-> [a]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [a] -> [a]
forall a. a -> a
id (Natural -> [a] -> [a]
forall i a. Integral i => i -> [a] -> [a]
L.genericTake (Natural -> [a] -> [a])
-> (Positive Natural -> Natural) -> Positive Natural -> [a] -> [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Positive Natural -> Natural
forall a. Positive a -> a
unPositive) Maybe (Positive Natural)
psLimit ([a] -> [a]) -> ([a] -> [a]) -> [a] -> [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Natural -> [a] -> [a]
forall i a. Integral i => i -> [a] -> [a]
L.genericDrop Natural
psOffset