# Tutorial de paginação - parte 1

Nos passos iniciais do pipeline de paginação, nós configuramos o trigger do pipeline e usamos uma sequência de componentes para configurar e salvar os parâmetros de paginação, como descrito abaixo:

<figure><img src="/files/FsXrixIJovZY3wAL3mk3" alt=""><figcaption><p>Passos iniciais de um pipeline de paginação</p></figcaption></figure>

&#x20; 1\. Configure o *trigger* do pipeline para um *scheduler trigger* de cinco minutos.

Esse pipeline migra um banco de dados diariamente às 1 da manhã. O *pipeline* é ativado em intervalos regulares para verificar se está na hora de começar a paginação. Aqui, configuramos o *trigger* para ativar o *pipeline* a cada cinco minutos.

&#x20; 2\. Consulte os parâmetros da paginação usando um componente Object Store (OS).

Esse componente consulta um banco de dados OS para encontrar parâmetros de paginação. Esses parâmetros são:

* *Start timestamp*: a data e hora nos quais o pipeline foi ativado.&#x20;
* *Limit*: o número máximo de resultados a serem retornados.
* *Start*: o índice do primeiro registro a ser processado nesse passo do processo de paginação.&#x20;
* *End*: o índice do último registro a ser processado nesse passo do processo de paginação.&#x20;
* *Step*: esse parâmetro assume o valor `EXTRACTING_DATA` quando o processo de paginação está ocorrendo ou `FINISHED` quando ele termina ou quando o *pipeline* é executado pela primeira vez.&#x20;
* *Next execution timestamp*: a data e hora do próximo processo de migração.

Para consultar os parâmetros, selecionamos a operação “Find by Object ID” e definimos o Object ID como:

```
{{ CONCAT(metadata.pipeline.name, "_v" , metadata.pipeline.versionMajor) }}
```

Aqui, usamos a função CONCAT para nomear o ID do Object Store como o nome desse pipeline seguido de sua versão.

Atribua valor `0` para os parâmetros *limit* e *skip* desse componente e ative a opção *Unique Index*.

Durante a primeira execução do *pipeline*, os parâmetros da paginação não existirão, então precisamos definir valores padrão para eles. Faremos isso no passo 3.

&#x20; 3\. Defina valores padrão para os parâmetros da paginação utilizando um componente JSON Generator.

Utilizamos a função Double Braces DEFAULT para atribuir valores padrão aos parâmetros da paginação recuperados pelo Object Store se eles não existirem. Isso acontece durante a primeira execução do *pipeline*.

O parâmetro JSON desse componente deve ser configurado desta maneira:

```json
{
    "control":{
        "startTimestamp": {{ metadata.execution.startTimestamp }},
        "limit": {{ DEFAULT( message.data[0].limit, 500 ) }},
        "start": {{ DEFAULT( message.data[0].start, 0 ) }},
        "end": {{ DEFAULT( message.data[0].end, 500 ) }},
        "step": {{ DEFAULT( message.data[0].step, "FINISHED" ) }},
        "nextExecutionTimestamp": {{ message.data[0].nextExecutionTimestamp }}
    }
}
```

Nesse exemplo, nós atribuímos o valor `500` para a propriedade *limit*. Ao aplicar a paginação, você deve mudar esse valor de acordo com sua necessidade de processamento de dados. Um valor de *limit* muito alto pode sobrecarregar o *pipeline*, fazendo com que a paginação perca seu propósito; um valor muito pequeno pode deixar o processo lento.

&#x20; 4\. Salve a propriedade `contol` usando um componente Session Management.

&#x20; 5\. Divida o fluxo de integração usando um componente Choice.

Esse componente divide o fluxo de integração nos três caminhos mencionados anteriormente: o caminho FINISHED, o caminho EXTRACTING\_DATA e o caminho de erro. Vamos descrever como cada caminho deve ser construído nos próximos artigos.

<figure><img src="/files/LnOBD8oqgAPtn2jozHIw" alt=""><figcaption><p>Camihos do <em>pipeline</em> de paginação</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/resources/pt-br/best-practices/pagination-tutorial/pagination-tutorial-part-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
