Esse ORM foi criado com o intuito de facilitar o consumo de dados da API oficial do IXC Provedor.
Essa biblioteca não faz parte das bibliotecas oficiais da IXCsoft e foi desenvolvida de forma independente e sem fins lucrativos.
npm install ixc-ormpnpm add ixc-ormyarn add ixc-ormPara configurar a comunicação da biblioteca com seu servidor IXC Provedor, é necessário adicionar as seguintes variáveis de ambiente a um arquivo .env, que esteja localizado no diretório raiz do seu projeto.
Note
Versão 1.8.0 stable
- IXC_ACCESS_TOKEN Um token de API gerado dentro do IXC Provedor.
- IXC_SERVER_DOMAIN O domínio do seu servidor IXC Provedor.
IXC_ACCESS_TOKEN=conteúdo-do-token-gerado-dentro-do-ixc
IXC_SERVER_DOMAIN=www.dominio-do-seu-servidor-ixc.com.brVocê também poderá configurar para que o Docker carregue as variáveis, ao invés de carregá-las diretamente do arquivo .env, dessa forma:
services:
sua-aplicacao:
build: .
image: sua-imagem-docker
environment:
- IXC_ACCESS_TOKEN=${IXC_ACCESS_TOKEN}
- IXC_SERVER_DOMAIN=${IXC_SERVER_DOMAIN}
# Outras configurações do seu serviçoVersão 1.6.0 ou anterior:
- IXC_HOST A url do seu servidor IXC Provedor.
- IXC_TOKEN Um token de API gerado dentro do IXC Provedor.
IXC_HOST="https://dominiodoservidorixc.com.br/webservice/v1"
IXC_TOKEN="8:k4n8wk1946j7mimthei869cq1zz2u940f2gqobqg081y2oefl80mzhtq2wud3gqp"As classes que representarão os diferentes tipos de registros no seu IXC Provedor, deverão herdar da classe IxcOrm (nova versão), como no exemplo a seguir:
Note
Versão 1.8.0 stable
import { IxcOrm } from 'ixc-orm';
class Contrato extends IxcOrm {
constructor() {
super('cliente_contrato');
}
}Versão 1.6.0 ou anterior
import { IXCClient } 'ixc-orm';
class Contrato extends IXCClient {
constructor() {
super('cliente_contrato');
}
}Após instanciar um objeto com o tipo que você criou (Contrato, como no exemplo a cima), você poderá acessar os métodos de construção da query de busca.
Note
Versão 1.8.0 stable
import { IxcResponse, Sort } from 'ixc-orm';
const contrato = new Contrato();
IxcResponse response = await contrato
.where('data_ativacao')
.greaterThanEquals('2024-09-24')
.orderBy('data_ativacao', Sort.DESC)
.GET();
const contratos = response.registros(); Versão 1.6.0 ou anterior
const contrato = new Contrato();
const contratos = await contrato
.where(['id_cliente', 240])
.where(['data_ativacao', '>=', '2024-09-24 00:45:00'])
.orderBy('data_ativacao', 'desc')
.get()Ou quando você já possui o ID do registro que procura, a opção mais simples será utilizar o método find(). Este método também está implementado na classe IXCClient
Note
Método disponível apenas para as subclasses de IXCClient.
const contrato = new Contrato();
const id_contrato = 4574;
const contratos = await contrato.find(id_contrato)Existem alguns endpoints que a API do IXC disponibiliza, a fim de "encurtar o caminho" para chegar até algumas informações. Como por exemplo, obter o arquivo PDF de uma fatura.
Para isso, você não precisará se preocupar em criar uma classe Boleto que herde da classe IxcOrm, por exemplo,
nem encadear chamadas de filtros. Basta fazer como no exemplo a seguir:
import { Recurso } from 'ixc-orm';
const id_contrato = 45852;
const response = await Recurso.desbloqueioDeConfianca(id_contrato);Dos recursos disponibilizados pela API do IXC Provedor, essa biblioteca já implementou:
get_boleto,desbloqueio_confiancaecliente_contrato_btn_lib_temp_24722.
Obs: Os nomes dos recursos estão de acordo com a API do IXC Provedor a fim de facilitar o estudo através da sua documentação oficial.
Contribuições são sempre bem-vindas!
Se você conhece uma maneira melhor de fazer algo, por favor, me avise!
Caso contrário, é sempre melhor fazer um PR na branch main.
At.te,
Felipe S. Carmo.