# ServiceBase

### Métodos

#### save

Este método realiza **POST** e **PUT** (Caso informe o id).

#### getAll

Este método retorna uma lista de objetos através de um filtro (Opcional).

#### getById

Este método retorna um objeto pelo id.

#### delete

Este método exclui um objeto pelo id.

#### deleteMany

Este método exclui um ou mais objetos por uma lista de ids.

#### exportByService

Este método exporta em csv ou xlsx dados através de paginação.

{% hint style="info" %}
Ao executar este método, será exibido um [Loader Page](/loaders/loader-page.md) contendo o progresso da exportação.
{% endhint %}

#### getDatatable

Este método é obrigatório de implementação, tendo como objetivo a padronização dos dados retornados para o componente de [Datatable](/exibicao-de-dados/datatable.md).

### Configuração

{% hint style="warning" %}
Para que funcione conforme esperado, inclua a partir do método **super** no construtor da classe o **HttpClient** e o nome do **mainResource** da **API** que deseja integrar, como por exemplo:

*https\://{HOST}/{**mainResource**}*
{% endhint %}

Esta classe permite a utilização de Mockup, informando no construtor através no método **super** as opções necessárias.

{% code lineNumbers="true" %}

```typescript
import { CatServiceBase } from '@catrx/ui/common';

export class ExampleService extends CatServiceBase {
  constructor(httpClient: HttpClient) {
    super(httpClient, 'cat', {
      useMockup: true,
      mockupStartBase: [
        {...}
      ]
    })
  }
}
```

{% endcode %}

{% hint style="info" %}
A opção **mockupStartBase** é opcional e ela definirá o estado inicial de seu mockup, populando uma lista inicial, que poderá ser acessada através do método [getAll](#getall).
{% endhint %}

{% hint style="info" %}
O host da API que será integrada por padrão utiliza a informada em seu arquivo environment pelo atributo **hostApi,** porém, caso queira utilizar algum personalizado, basta informar nas opções através do método super.
{% endhint %}

{% code lineNumbers="true" %}

```typescript
import { CatServiceBase } from '@catrx/ui/common';

export class ExampleService extends CatServiceBase {
  constructor(httpClient: HttpClient) {
    super(httpClient, 'cat', {
      customHost: 'https://example.com'
    })
  }
}
```

{% endcode %}


---

# 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://doc.catui.igordrangel.com.br/abstracoes/servicebase.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.
