-
Notifications
You must be signed in to change notification settings - Fork 8
Description
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.
