Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

api: refactor pagination #1341

Merged
merged 3 commits into from
Jul 26, 2024
Merged

api: refactor pagination #1341

merged 3 commits into from
Jul 26, 2024

Commits on Jul 26, 2024

  1. Revert "api: endpoint /chain/transactions/{height}/{index} now output…

    …s fields as hex instead of base64"
    
    This reverts commit b46eef4.
    altergui committed Jul 26, 2024
    Configuration menu
    Copy the full SHA
    6caf6a5 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    fa0c9ba View commit details
    Browse the repository at this point in the history
  3. api: implement pagination and query params

    * add new endpoints, all of them include a `pagination` field in reply, and accept QueryParams:
      * GET /elections
        * page
        * limit
        * status
        * organizationId
        * electionId
        * withResults
        * finalResults
        * manuallyEnded
    
      * GET /accounts
        * page
        * limit
    
      * GET /chain/transactions
        * page
        * limit
        * height
        * type
    
      * GET /chain/organizations
        * page
        * limit
        * organizationId
    
      * GET /chain/fees
        * page
        * limit
        * reference
        * type
        * accountId
    
      * GET /votes
        * page
        * limit
        * electionId
    
    * mark all of these endpoints as deprecated on swagger docs:
      * GET /accounts/page/{page}
      * GET /accounts/{organizationID}/elections/status/{status}/page/{page}
      * GET /accounts/{organizationID}/elections/page/{page}
      * GET /elections/page/{page}
      * POST /elections/filter/page/{page}
      * GET /chain/organizations/page/{page}
      * POST /chain/organizations/filter/page/{page}
      * GET /elections/{electionId}/votes/page/{page}
    all of these were anyway refactored in a backwards-compatible manner,
    to unify pagination logic (adding `pagination` field)
    
    * api: return ErrPageNotFound on all paginated endpoints, when page is negative or higher than last_page
    * api: new param `limit` in all paginated endpoints
      (defaults to DefaultItemsPerPage if ommitted, and can't surpass hardcoded MaxItemsPerPage)
    * api: all paginated endpoints return an empty list in case of no results (instead of 404)
    
    api internal code refactorings:
    * api: unify hardcoded structs into a new types:
      * AccountsList
      * ElectionsList
      * OrganizationsList
      * FeesList
      * VotesList
      * TransactionsList
      * CountResult
    
    * api: deduplicate several code snippets, with marshalAndSend and parse* helpers
    * api: rename const MaxPageSize -> MaxItemsPerPage
    * api: add Param* consts, and fix case of all URLParams 'ID' -> 'Id'
    * api: add *Params types (PaginationParams, ElectionParams, etc)
    
    * api: fix strings in errors returned to client, replacing "ID" -> "Id"
    * api: fix swagger docs, replace many occurences of "ID" -> "Id"
    * api: fix swagger docs, lots of small inaccuracies
    
    * test: add TestAPIAccountsList and TestAPIElectionsList
    
    indexer changes:
    * rename GetListAccounts -> AccountList
    * rename GetEnvelopes -> VoteList
    * replace GetTokenFees* methods with a single TokenFeesList
    * methods AccountList, ProcessList, EntityList, VoteList, TokenFeesList now:
      * return a TotalCount
      * reordered and renamed args (from, max) -> (limit, offset)
    altergui committed Jul 26, 2024
    Configuration menu
    Copy the full SHA
    b510ac8 View commit details
    Browse the repository at this point in the history