# 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](https://doc.catui.igordrangel.com.br/loaders/loader-page) 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](https://doc.catui.igordrangel.com.br/exibicao-de-dados/datatable).

### 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 %}
