servant-pagination 2.3.0 → 2.4.0
raw patch · 3 files changed
+16/−12 lines, 3 filesdep ~servantdep ~servant-servernew-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: servant, servant-server
API changes (from Hackage documentation)
- Servant.Pagination: AcceptRanges :: AcceptRanges
+ Servant.Pagination: AcceptRanges :: AcceptRanges (fields :: [Symbol])
- Servant.Pagination: ContentRange :: RangeType resource field -> RangeType resource field -> Proxy field -> ContentRange resource
+ Servant.Pagination: ContentRange :: RangeType resource field -> RangeType resource field -> Proxy field -> ContentRange (fields :: [Symbol]) resource
- Servant.Pagination: Range :: Maybe a -> Int -> Int -> RangeOrder -> Proxy field -> Range
+ Servant.Pagination: Range :: Maybe a -> Int -> Int -> RangeOrder -> Proxy field -> Range (field :: Symbol) (a :: *)
- Servant.Pagination: [contentRangeEnd] :: ContentRange resource -> RangeType resource field
+ Servant.Pagination: [contentRangeEnd] :: ContentRange (fields :: [Symbol]) resource -> RangeType resource field
- Servant.Pagination: [contentRangeField] :: ContentRange resource -> Proxy field
+ Servant.Pagination: [contentRangeField] :: ContentRange (fields :: [Symbol]) resource -> Proxy field
- Servant.Pagination: [contentRangeStart] :: ContentRange resource -> RangeType resource field
+ Servant.Pagination: [contentRangeStart] :: ContentRange (fields :: [Symbol]) resource -> RangeType resource field
- Servant.Pagination: [rangeField] :: Range -> Proxy field
+ Servant.Pagination: [rangeField] :: Range (field :: Symbol) (a :: *) -> Proxy field
- Servant.Pagination: [rangeLimit] :: Range -> Int
+ Servant.Pagination: [rangeLimit] :: Range (field :: Symbol) (a :: *) -> Int
- Servant.Pagination: [rangeOffset] :: Range -> Int
+ Servant.Pagination: [rangeOffset] :: Range (field :: Symbol) (a :: *) -> Int
- Servant.Pagination: [rangeOrder] :: Range -> RangeOrder
+ Servant.Pagination: [rangeOrder] :: Range (field :: Symbol) (a :: *) -> RangeOrder
- Servant.Pagination: [rangeValue] :: Range -> Maybe a
+ Servant.Pagination: [rangeValue] :: Range (field :: Symbol) (a :: *) -> Maybe a
Files
- servant-pagination.cabal +7/−7
- src/Servant/Pagination.hs +8/−4
- stack.yaml +1/−1
servant-pagination.cabal view
@@ -10,7 +10,7 @@ different fashions (pagination with offset / limit, endless scroll using last referenced resources, ascending and descending ordering, etc.) version:- 2.3.0+ 2.4.0 homepage: https://github.com/chordify/haskell-servant-pagination bug-reports:@@ -84,8 +84,8 @@ build-depends: base >= 4 && < 5 , text >= 1.2 && < 2- , servant >= 0.11 && < 0.18- , servant-server >= 0.11 && < 0.18+ , servant >= 0.11 && < 0.19+ , servant-server >= 0.11 && < 0.19 , safe >= 0.3 && < 1 , uri-encode >= 1.5 && < 1.6 @@ -130,9 +130,9 @@ build-depends: base >= 4 && < 5 , aeson >= 1.2 && < 2- , servant >= 0.11 && < 0.18+ , servant >= 0.11 && < 0.19 , servant-pagination- , servant-server >= 0.11 && < 0.18+ , servant-server >= 0.11 && < 0.19 , warp >= 3.2 && < 4 hs-source-dirs:@@ -178,9 +178,9 @@ build-depends: base >= 4 && < 5 , aeson >= 1.2 && < 2- , servant >= 0.11 && < 0.18+ , servant >= 0.11 && < 0.19 , servant-pagination- , servant-server >= 0.11 && < 0.18+ , servant-server >= 0.11 && < 0.19 , warp >= 3.2 && < 4 hs-source-dirs:
src/Servant/Pagination.hs view
@@ -79,7 +79,7 @@ -- -- defaultRange :: 'Range' "name" 'String' -- defaultRange =--- 'getDefaultRange' ('Data.Proxy.Proxy' @Color)+-- 'getDefaultRange' ('Data.Proxy.Proxy' \@Color) -- -- server :: 'Servant.Server.Server' API -- server mrange = do@@ -90,7 +90,7 @@ -- -- main :: 'IO' () -- main =--- 'Network.Wai.Handler.Warp.run' 1337 ('Servant.Server.serve' ('Data.Proxy.Proxy' @API) server)+-- 'Network.Wai.Handler.Warp.run' 1337 ('Servant.Server.serve' ('Data.Proxy.Proxy' \@API) server) -- @ module Servant.Pagination (@@ -289,7 +289,7 @@ range <- Range <$> mapM (parseUrlPiece . decodeText) (listToMaybe value)- <*> ifOpt "limit" defaultRangeLimit opts+ <*> (ifOpt "limit" defaultRangeLimit opts >>= checkLimit) <*> ifOpt "offset" defaultRangeOffset opts <*> ifOpt "order" defaultRangeOrder opts <*> pure (Proxy @field)@@ -312,6 +312,10 @@ ifOpt opt def = maybe (pure def) (parseQueryParam . snd) . find ((== opt) . fst) + checkLimit :: Int -> Either Text Int+ checkLimit n+ | n < 0 = Left "Limit must be non-negative"+ | otherwise = return n -- | Define the sorting order of the paginated resources (ascending or descending) data RangeOrder@@ -418,7 +422,7 @@ -- -> 'Servant.Server.Handler' ('Servant.Headers' ('PageHeaders' '["created_at"] Resource) [Resource]) -- myHandler mrange = -- let range =--- 'Data.Maybe.fromMaybe' ('getDefaultRange' ('Data.Proxy.Proxy' @Resource)) (mrange >>= 'extractRange')+-- 'Data.Maybe.fromMaybe' ('getDefaultRange' ('Data.Proxy.Proxy' \@Resource)) (mrange >>= 'extractRange') -- -- 'returnRange' range ('applyRange' range resources) -- @
stack.yaml view
@@ -1,4 +1,4 @@-resolver: lts-14.25+resolver: lts-16.15 # Generate files required by Weeder. # See https://github.com/ndmitchell/weeder/issues/53