Skip to content

Sugestão: adicionar ordenação por id nas cobranças (charges) #15

@giovannibonetti

Description

@giovannibonetti

TLDR: a chamada list_charges não aceita o parâmetro sort_by: id. Mas seria vantajoso do lado do servidor se aceitasse, pois a paginação é mais eficiente.


Aqui na empresa usamos bastante a API da Vindi para carregar dados em lote, com várias chamadas para carregar todos os registros de um recurso (por conta da paginação). Daí percebemos que o recurso charges não permite ordenação por id. Isso é diferente de outros recursos como customers e subscriptions, onde podemos usar isso para fazer uma paginação eficiente passando o último id da resposta anterior:

vindi_client.list_customers(per_page: 50, sort_by: 'id', query: "id>#{last_id}")

Dessa forma, para carregar em lotes as cobranças (charges) é necessário utilizar um offset:

vindi_client.list_charges(per_page: PAGE_SIZE, page: current_page + 1)

Fazer paginação por id no lugar de offset seria bom tanto para o cliente quanto o servidor.

  • Para o servidor é bom porque usa menos recursos do banco de dados;
  • Para o cliente é bom porque a paginação é mais estável (por exemplo, se for removido um registro na tabela durante o carregamento em lote)

Este artigo explica porque a paginação sem OFFSET é mais eficiente no banco de dados.

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions