diff options
| author | alexwl <alexey.a.kiryushin@gmail.com> | 2019-06-09 17:18:38 +0300 | 
|---|---|---|
| committer | alexwl <alexey.a.kiryushin@gmail.com> | 2019-06-09 17:18:38 +0300 | 
| commit | 3da88457b2566aec3f4e0b368a21c9f2bb389e29 (patch) | |
| tree | baa849c12888a458a5814dad12956d43e81cf2ba /app | |
| parent | ee22264676df30004bc17c11a81a9f67a98729fc (diff) | |
Refactor 'addHeaders' function
Diffstat (limited to 'app')
| -rw-r--r-- | app/Server.hs | 57 | 
1 files changed, 32 insertions, 25 deletions
diff --git a/app/Server.hs b/app/Server.hs index 3ffef1a..30109e6 100644 --- a/app/Server.hs +++ b/app/Server.hs @@ -1264,12 +1264,27 @@ initializePagination mbPage mbPerPage = do            Nothing -> maxPerPage    return (fromIntegral page, fromIntegral perPage) +addPaginationHeaders :: +     forall a b. +     T.Text +  -> Paginated a +  -> Int +  -> Natural +  -> Natural +  -> b +  -> Headers '[ Header "Link" T.Text, Header "X-Total-Count" Int] b +addPaginationHeaders url items totalCount page perPage = +  addHeader linkHeader . addHeader totalCount +  where +    linkHeader :: T.Text +    linkHeader = buildLinkHeader url items page perPage +  getGlobalReferences ::       HCE.ExternalId -> ReaderT Environment IO [GlobalReferences]  getGlobalReferences externalId = do    refMap <- asks envGlobalReferenceMap -  return $ maybe [] S.toDescList (HM.lookup externalId refMap)   - +  return $ maybe [] S.toDescList (HM.lookup externalId refMap)     +    getReferences ::       PackageId    -> HCE.ExternalId @@ -1296,19 +1311,12 @@ getReferences packageId externalId mbPage mbPerPage =                        externalId                        Nothing                        Nothing -                  linkHeader = -                    buildLinkHeader url paginatedReferences page perPage -                  addHeaders :: -                       forall a. -                       a -                    -> Headers '[ Header "Link" T.Text, Header "X-Total-Count" Int] a -                  addHeaders = addHeader linkHeader . addHeader totalCount                    refModulePath :: ReferenceWithSource -> HCE.HaskellModulePath                    refModulePath =                      (HCE.modulePath :: HCE.IdentifierSrcSpan -> HCE.HaskellModulePath) .                      idSrcSpan                return $ -                addHeaders $ +                addPaginationHeaders url paginatedReferences totalCount page perPage $                  concatMap                    (\refs ->                       case refs of @@ -1413,7 +1421,7 @@ findIdentifiers ::    -> Maybe Int    -> Maybe Int    -> ReaderT Environment IO (Headers '[ Header "Link" T.Text, Header "X-Total-Count" Int] [HCE.ExternalIdentifierInfo]) -findIdentifiers packageId query' mbPage mbPerPage =   +findIdentifiers packageId query' mbPage mbPerPage =    withPackageInfo packageId $ \packageInfo' ->      let query = fixDots query'          respond identifiers = do @@ -1429,13 +1437,15 @@ findIdentifiers packageId query' mbPage mbPerPage =                    query'                    Nothing                    Nothing -              linkHeader = buildLinkHeader url paginatedIdentifiers page perPage -              addHeaders :: -                   forall a. -                   a -                -> Headers '[ Header "Link" T.Text, Header "X-Total-Count" Int] a -              addHeaders = addHeader linkHeader . addHeader totalCount -          return . addHeaders . paginatedItems $ paginatedIdentifiers +          return . +            addPaginationHeaders +              url +              paginatedIdentifiers +              totalCount +              page +              perPage . +            paginatedItems $ +            paginatedIdentifiers       in case packageInfo' of            PackageInfo packageInfo -> do              let identifiers @@ -1502,13 +1512,10 @@ findGlobalIdentifiers query' mbPage mbPerPage = do            query'            Nothing            Nothing -      linkHeader = buildLinkHeader url paginatedIdentifiers page perPage -      addHeaders :: -           forall a. -           a -        -> Headers '[ Header "Link" T.Text, Header "X-Total-Count" Int] a -      addHeaders = addHeader linkHeader . addHeader totalCount -  return . addHeaders . paginatedItems $ paginatedIdentifiers +  return . +    addPaginationHeaders url paginatedIdentifiers totalCount page perPage . +    paginatedItems $ +    paginatedIdentifiers  data HoogleResultItem = HoogleResultItem    { sort :: HoogleItemSort  | 
