ixc-orm 1.4.2 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/IXCClient.d.ts +27 -13
- package/dist/IXCClient.js +105 -28
- package/dist/request.d.ts +8 -4
- package/dist/request.js +23 -19
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# IXC-ORM
|
|
1
|
+
# IXC-ORM [](https://www.npmjs.com/package/ixc-orm)
|
|
2
2
|
|
|
3
3
|
Este ORM simples visa facilitar o consumo de dados da API oficial do IXCsoft.\
|
|
4
4
|
Esta biblioteca não faz parte das bibliotecas oficiais da IXCsoft e foi desenvolvida de forma independente e sem fins lucrativos.
|
|
@@ -6,8 +6,13 @@ Esta biblioteca não faz parte das bibliotecas oficiais da IXCsoft e foi desenvo
|
|
|
6
6
|
|
|
7
7
|
## 🚀 Novidades
|
|
8
8
|
|
|
9
|
-
### v1.4.
|
|
9
|
+
### v1.4.4 - 15 de agosto de 2025
|
|
10
|
+
* **Melhorado:** Foi adicionado um método `find()` a classe `IXCClient`, para encontrar um registro pelo seu `id` de uma forma mais simples.
|
|
11
|
+
|
|
12
|
+
### v1.4.3 - 15 de agosto de 2025
|
|
13
|
+
* **Melhorado:** Os métodos `get()`, `post()` e `put()` da classe `IXCClient`, a partir de agora sempre retornarão um objeto `IXCResponse`, indepedente da requisição falhar ou não.
|
|
10
14
|
|
|
15
|
+
### v1.4.1 - 14 de agosto de 2025
|
|
11
16
|
* **Corrigido:** Resolvido o bug de leitura das variáveis de ambiente no arquivo .env na pasta raiz.
|
|
12
17
|
* **Novo:** Foram adicionados 3 dos 44 recursos da API do IXC: `get_boleto`, `liberacao_temporaria` e `desbloqueio_confianca`. (Futuramente novos recursos serão adicionados)
|
|
13
18
|
|
package/dist/IXCClient.d.ts
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
import { AxiosError } from 'axios';
|
|
2
1
|
import { IXCOptions, IXCQuery, IXCResponse, IXCSortOrder } from './types';
|
|
3
2
|
export default abstract class IXCClient {
|
|
4
3
|
protected table: string;
|
|
5
4
|
protected params: IXCQuery[];
|
|
6
5
|
protected options: IXCOptions;
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
9
7
|
* @param table O nome da tabela correspondente ao banco de dados do seu servidor IXC
|
|
10
8
|
* @see {@link https://wikiapiprovedor.ixcsoft.com.br/index.php}
|
|
11
9
|
*/
|
|
12
10
|
constructor(table: string);
|
|
13
11
|
/**
|
|
12
|
+
* Incrementa o array de parâmetros que serão trasformados no corpo de uma requisição
|
|
13
|
+
* e passados como filtro grid da API do IXC
|
|
14
14
|
*
|
|
15
|
-
* @param whereClauses Um array de strings, no formato [coluna, operador, valor]
|
|
16
|
-
* Obs
|
|
17
|
-
*
|
|
15
|
+
* @param whereClauses Um array de strings, no formato [coluna, operador, valor]\
|
|
16
|
+
* `Obs`: se você passar um array no formato [coluna, valor] o operador será considerado como '='\
|
|
17
|
+
* Os operadores válidos são: =, !=, >, <, >=, <=, LIKE
|
|
18
18
|
* @returns A própria instância
|
|
19
19
|
*/
|
|
20
20
|
where(whereClauses: string[]): IXCClient;
|
|
21
21
|
/**
|
|
22
|
+
* Define como a API do IXC ordenará os dados retornados
|
|
22
23
|
*
|
|
23
24
|
* @param column A coluna que será usada para ordenar a busca
|
|
24
25
|
* @param order A ordem da busca ('asc'ou 'desc')
|
|
@@ -26,28 +27,41 @@ export default abstract class IXCClient {
|
|
|
26
27
|
*/
|
|
27
28
|
orderBy(column: string, order: keyof typeof IXCSortOrder): IXCClient;
|
|
28
29
|
/**
|
|
30
|
+
* Envia uma requisição GET para a API do IXC, com o header `ixcsoft` definico como `listar`\
|
|
31
|
+
* A `query` dessa requisição não será enviada para o IXC com o parâmetro `grid_param`\
|
|
32
|
+
* Ou seja, esta requisição executa uma busca simples, em vez do filtro de grid
|
|
33
|
+
*
|
|
34
|
+
* @param id O identificador numérico do registro que será buscado no IXC
|
|
35
|
+
* @returns Promise<IXCResponse>
|
|
36
|
+
*/
|
|
37
|
+
find(id: any): Promise<IXCResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* Envia uma requisição GET para a API do IXC, com o header `ixcsoft` definico como `listar`
|
|
40
|
+
* Preenche o corpo da requisição com os dados passados pela função `where` no formado JSON
|
|
29
41
|
*
|
|
30
|
-
* @param pg O número da página que será solicitada ao IXC
|
|
31
|
-
* @param rows A quantidade de linhas (registros) por página
|
|
32
|
-
* @returns Promise<
|
|
42
|
+
* @param pg O número da página que será solicitada ao IXC `padão = 1`
|
|
43
|
+
* @param rows A quantidade de linhas (registros) por página `padrão = 20`
|
|
44
|
+
* @returns Promise<IXCResponse>
|
|
33
45
|
*/
|
|
34
|
-
get(pg?: number, rows?: number): Promise<
|
|
46
|
+
get(pg?: number, rows?: number): Promise<IXCResponse>;
|
|
35
47
|
/**
|
|
48
|
+
* Envia uma requisição do tipo `POST` para a API do IXC, com o header `ixcsoft` vazio
|
|
36
49
|
*
|
|
37
50
|
* @param body Um objeto no formado "chave: valor" contendo as informações do novo registro
|
|
38
51
|
* a ser inserido no banco de dados do seu servidor IXC
|
|
39
|
-
* @returns Promise<
|
|
52
|
+
* @returns Promise<IXCResponse>
|
|
40
53
|
*/
|
|
41
54
|
post(body?: {
|
|
42
55
|
[key: string]: any;
|
|
43
|
-
}): Promise<
|
|
56
|
+
}): Promise<IXCResponse>;
|
|
44
57
|
/**
|
|
58
|
+
* Envia uma requisição do tipo `PUT` para a API do IXC, com o header `ixcsoft` vazio
|
|
45
59
|
*
|
|
46
60
|
* @param id O id do registro que será alterado
|
|
47
61
|
* @param body Um objeto no formado "chave : valor" contendo as colunas que serão alteradas
|
|
48
|
-
* @returns Promise<
|
|
62
|
+
* @returns Promise<IXCResponse>
|
|
49
63
|
*/
|
|
50
64
|
put(id: number, body?: {
|
|
51
65
|
[key: string]: any;
|
|
52
|
-
}): Promise<
|
|
66
|
+
}): Promise<IXCResponse>;
|
|
53
67
|
}
|
package/dist/IXCClient.js
CHANGED
|
@@ -20,12 +20,11 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
const axios_1 = require("axios");
|
|
24
23
|
const request_1 = require("./request");
|
|
25
24
|
const types_1 = require("./types");
|
|
25
|
+
const response_1 = require("./response");
|
|
26
26
|
class IXCClient {
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
29
28
|
* @param table O nome da tabela correspondente ao banco de dados do seu servidor IXC
|
|
30
29
|
* @see {@link https://wikiapiprovedor.ixcsoft.com.br/index.php}
|
|
31
30
|
*/
|
|
@@ -40,10 +39,12 @@ class IXCClient {
|
|
|
40
39
|
};
|
|
41
40
|
}
|
|
42
41
|
/**
|
|
42
|
+
* Incrementa o array de parâmetros que serão trasformados no corpo de uma requisição
|
|
43
|
+
* e passados como filtro grid da API do IXC
|
|
43
44
|
*
|
|
44
|
-
* @param whereClauses Um array de strings, no formato [coluna, operador, valor]
|
|
45
|
-
* Obs
|
|
46
|
-
*
|
|
45
|
+
* @param whereClauses Um array de strings, no formato [coluna, operador, valor]\
|
|
46
|
+
* `Obs`: se você passar um array no formato [coluna, valor] o operador será considerado como '='\
|
|
47
|
+
* Os operadores válidos são: =, !=, >, <, >=, <=, LIKE
|
|
47
48
|
* @returns A própria instância
|
|
48
49
|
*/
|
|
49
50
|
where(whereClauses) {
|
|
@@ -63,6 +64,7 @@ class IXCClient {
|
|
|
63
64
|
return this;
|
|
64
65
|
}
|
|
65
66
|
/**
|
|
67
|
+
* Define como a API do IXC ordenará os dados retornados
|
|
66
68
|
*
|
|
67
69
|
* @param column A coluna que será usada para ordenar a busca
|
|
68
70
|
* @param order A ordem da busca ('asc'ou 'desc')
|
|
@@ -74,27 +76,86 @@ class IXCClient {
|
|
|
74
76
|
return this;
|
|
75
77
|
}
|
|
76
78
|
/**
|
|
79
|
+
* Envia uma requisição GET para a API do IXC, com o header `ixcsoft` definico como `listar`\
|
|
80
|
+
* A `query` dessa requisição não será enviada para o IXC com o parâmetro `grid_param`\
|
|
81
|
+
* Ou seja, esta requisição executa uma busca simples, em vez do filtro de grid
|
|
77
82
|
*
|
|
78
|
-
* @param
|
|
79
|
-
* @
|
|
80
|
-
|
|
83
|
+
* @param id O identificador numérico do registro que será buscado no IXC
|
|
84
|
+
* @returns Promise<IXCResponse>
|
|
85
|
+
*/
|
|
86
|
+
find(id) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
const params = {
|
|
90
|
+
TB: 'id',
|
|
91
|
+
OP: '=',
|
|
92
|
+
P: id
|
|
93
|
+
};
|
|
94
|
+
const opts = {
|
|
95
|
+
page: 1,
|
|
96
|
+
rowsPerPage: 1,
|
|
97
|
+
};
|
|
98
|
+
const axios = (0, request_1.createAxiosInstance)('GET');
|
|
99
|
+
const data = (0, request_1.createRequestPayload)(this.table, params, opts);
|
|
100
|
+
try {
|
|
101
|
+
const response = yield axios.get(this.table, { data });
|
|
102
|
+
if (response.status === 200) {
|
|
103
|
+
return response.data;
|
|
104
|
+
}
|
|
105
|
+
return (0, response_1.createResponse)({
|
|
106
|
+
error: true,
|
|
107
|
+
message: (_a = response.data) === null || _a === void 0 ? void 0 : _a.message
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error(error);
|
|
112
|
+
return (0, response_1.createResponse)({
|
|
113
|
+
error: true,
|
|
114
|
+
message: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText) || error.message || 'Erro desconhecido'
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
this.params = [];
|
|
119
|
+
this.options = {
|
|
120
|
+
page: 1,
|
|
121
|
+
rowsPerPage: 20,
|
|
122
|
+
sortName: 'id',
|
|
123
|
+
sortOrder: 'asc'
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Envia uma requisição GET para a API do IXC, com o header `ixcsoft` definico como `listar`
|
|
130
|
+
* Preenche o corpo da requisição com os dados passados pela função `where` no formado JSON
|
|
131
|
+
*
|
|
132
|
+
* @param pg O número da página que será solicitada ao IXC `padão = 1`
|
|
133
|
+
* @param rows A quantidade de linhas (registros) por página `padrão = 20`
|
|
134
|
+
* @returns Promise<IXCResponse>
|
|
81
135
|
*/
|
|
82
136
|
get(pg, rows) {
|
|
83
137
|
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
-
|
|
138
|
+
var _a, _b;
|
|
139
|
+
const _c = this.options, { page, rowsPerPage } = _c, rest = __rest(_c, ["page", "rowsPerPage"]);
|
|
85
140
|
const opts = Object.assign({ page: pg !== null && pg !== void 0 ? pg : page, rowsPerPage: rows !== null && rows !== void 0 ? rows : rowsPerPage }, rest);
|
|
86
141
|
const axios = (0, request_1.createAxiosInstance)('GET');
|
|
87
|
-
const
|
|
142
|
+
const data = (0, request_1.createRequestPayload)(this.table, this.params, opts);
|
|
88
143
|
try {
|
|
89
|
-
const response = yield axios.get(this.table,
|
|
90
|
-
|
|
144
|
+
const response = yield axios.get(this.table, { data });
|
|
145
|
+
if (response.status === 200) {
|
|
146
|
+
return response.data;
|
|
147
|
+
}
|
|
148
|
+
return (0, response_1.createResponse)({
|
|
149
|
+
error: true,
|
|
150
|
+
message: (_a = response.data) === null || _a === void 0 ? void 0 : _a.message
|
|
151
|
+
});
|
|
91
152
|
}
|
|
92
153
|
catch (error) {
|
|
93
154
|
console.error(error);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
155
|
+
return (0, response_1.createResponse)({
|
|
156
|
+
error: true,
|
|
157
|
+
message: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText) || error.message || 'Erro desconhecido'
|
|
158
|
+
});
|
|
98
159
|
}
|
|
99
160
|
finally {
|
|
100
161
|
this.params = [];
|
|
@@ -108,24 +169,32 @@ class IXCClient {
|
|
|
108
169
|
});
|
|
109
170
|
}
|
|
110
171
|
/**
|
|
172
|
+
* Envia uma requisição do tipo `POST` para a API do IXC, com o header `ixcsoft` vazio
|
|
111
173
|
*
|
|
112
174
|
* @param body Um objeto no formado "chave: valor" contendo as informações do novo registro
|
|
113
175
|
* a ser inserido no banco de dados do seu servidor IXC
|
|
114
|
-
* @returns Promise<
|
|
176
|
+
* @returns Promise<IXCResponse>
|
|
115
177
|
*/
|
|
116
178
|
post(body) {
|
|
117
179
|
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
var _a, _b;
|
|
118
181
|
const axios = (0, request_1.createAxiosInstance)('POST');
|
|
119
182
|
try {
|
|
120
183
|
const response = yield axios.post(this.table, { data: body });
|
|
121
|
-
|
|
184
|
+
if (response.status === 200) {
|
|
185
|
+
return response.data;
|
|
186
|
+
}
|
|
187
|
+
return (0, response_1.createResponse)({
|
|
188
|
+
error: true,
|
|
189
|
+
message: (_a = response.data) === null || _a === void 0 ? void 0 : _a.message
|
|
190
|
+
});
|
|
122
191
|
}
|
|
123
192
|
catch (error) {
|
|
124
193
|
console.error(error);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
194
|
+
return (0, response_1.createResponse)({
|
|
195
|
+
error: true,
|
|
196
|
+
message: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText) || error.message || 'Erro desconhecido'
|
|
197
|
+
});
|
|
129
198
|
}
|
|
130
199
|
finally {
|
|
131
200
|
this.params = [];
|
|
@@ -133,24 +202,32 @@ class IXCClient {
|
|
|
133
202
|
});
|
|
134
203
|
}
|
|
135
204
|
/**
|
|
205
|
+
* Envia uma requisição do tipo `PUT` para a API do IXC, com o header `ixcsoft` vazio
|
|
136
206
|
*
|
|
137
207
|
* @param id O id do registro que será alterado
|
|
138
208
|
* @param body Um objeto no formado "chave : valor" contendo as colunas que serão alteradas
|
|
139
|
-
* @returns Promise<
|
|
209
|
+
* @returns Promise<IXCResponse>
|
|
140
210
|
*/
|
|
141
211
|
put(id, body) {
|
|
142
212
|
return __awaiter(this, void 0, void 0, function* () {
|
|
213
|
+
var _a, _b;
|
|
143
214
|
const axios = (0, request_1.createAxiosInstance)('PUT');
|
|
144
215
|
try {
|
|
145
216
|
const response = yield axios.put(`${this.table}/${id}`, { data: body });
|
|
146
|
-
|
|
217
|
+
if (response.status === 200) {
|
|
218
|
+
return response.data;
|
|
219
|
+
}
|
|
220
|
+
return (0, response_1.createResponse)({
|
|
221
|
+
error: true,
|
|
222
|
+
message: (_a = response.data) === null || _a === void 0 ? void 0 : _a.message
|
|
223
|
+
});
|
|
147
224
|
}
|
|
148
225
|
catch (error) {
|
|
149
226
|
console.error(error);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
227
|
+
return (0, response_1.createResponse)({
|
|
228
|
+
error: true,
|
|
229
|
+
message: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText) || error.message || 'Erro desconhecido'
|
|
230
|
+
});
|
|
154
231
|
}
|
|
155
232
|
finally {
|
|
156
233
|
this.params = [];
|
package/dist/request.d.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { AxiosInstance
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
2
|
import { IXCOptions, IXCQuery, IXCRequest, IXCRequestMethods } from './types';
|
|
3
3
|
/**
|
|
4
|
+
* Cria uma instância de um objeto AxiosInstance, pré-configurado com os cabeçalhos necessários
|
|
5
|
+
* para executar uma requisição para a API do IXC
|
|
4
6
|
*
|
|
5
7
|
* @param method GET | POST | PUT | DELETE
|
|
6
|
-
* @returns
|
|
8
|
+
* @returns AxiosInstance
|
|
7
9
|
*/
|
|
8
10
|
export declare function createAxiosInstance(method?: keyof typeof IXCRequestMethods): AxiosInstance;
|
|
9
11
|
/**
|
|
12
|
+
* Cria um objeto `IXCRequest` configurado para ser utilizado como payload de uma requisição
|
|
13
|
+
* para a API do IXC
|
|
10
14
|
*
|
|
11
15
|
* @param table Nome da tabela do IXC onde será feita a busca, atualização, inserção ou remoção
|
|
12
16
|
* @param params Parâmetros da busca (desconsiderados quando a ação for a de inserir novos registros)
|
|
13
17
|
* @param options Parâmetros de formatação dos dados da responsta (página, ítens por página e ordenação)
|
|
14
|
-
* @returns
|
|
18
|
+
* @returns IXCRequest
|
|
15
19
|
*/
|
|
16
|
-
export declare function createRequestPayload(table: string, params: IXCQuery | IXCQuery[], options?: IXCOptions):
|
|
20
|
+
export declare function createRequestPayload(table: string, params: IXCQuery | IXCQuery[], options?: IXCOptions): IXCRequest;
|
package/dist/request.js
CHANGED
|
@@ -7,9 +7,11 @@ exports.createAxiosInstance = createAxiosInstance;
|
|
|
7
7
|
exports.createRequestPayload = createRequestPayload;
|
|
8
8
|
const axios_1 = __importDefault(require("axios"));
|
|
9
9
|
/**
|
|
10
|
+
* Cria uma instância de um objeto AxiosInstance, pré-configurado com os cabeçalhos necessários
|
|
11
|
+
* para executar uma requisição para a API do IXC
|
|
10
12
|
*
|
|
11
13
|
* @param method GET | POST | PUT | DELETE
|
|
12
|
-
* @returns
|
|
14
|
+
* @returns AxiosInstance
|
|
13
15
|
*/
|
|
14
16
|
function createAxiosInstance(method = 'GET') {
|
|
15
17
|
const host = process.env.IXC_HOST;
|
|
@@ -25,11 +27,13 @@ function createAxiosInstance(method = 'GET') {
|
|
|
25
27
|
});
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
30
|
+
* Cria um objeto `IXCRequest` configurado para ser utilizado como payload de uma requisição
|
|
31
|
+
* para a API do IXC
|
|
28
32
|
*
|
|
29
33
|
* @param table Nome da tabela do IXC onde será feita a busca, atualização, inserção ou remoção
|
|
30
34
|
* @param params Parâmetros da busca (desconsiderados quando a ação for a de inserir novos registros)
|
|
31
35
|
* @param options Parâmetros de formatação dos dados da responsta (página, ítens por página e ordenação)
|
|
32
|
-
* @returns
|
|
36
|
+
* @returns IXCRequest
|
|
33
37
|
*/
|
|
34
38
|
function createRequestPayload(table, params, options) {
|
|
35
39
|
var _a, _b, _c, _d;
|
|
@@ -46,24 +50,24 @@ function createRequestPayload(table, params, options) {
|
|
|
46
50
|
P: p.P
|
|
47
51
|
});
|
|
48
52
|
});
|
|
49
|
-
return {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
page: page,
|
|
54
|
-
rp: rowsPerPage,
|
|
55
|
-
sortname: `${table}.${sortName}`,
|
|
56
|
-
sortorder: sortOrder,
|
|
57
|
-
grid_param: JSON.stringify(grid_param)
|
|
58
|
-
} };
|
|
59
|
-
}
|
|
60
|
-
return { data: {
|
|
61
|
-
qtype: `${table}.${params.TB}`,
|
|
62
|
-
query: params.P,
|
|
63
|
-
oper: params.OP || '=',
|
|
53
|
+
return {
|
|
54
|
+
qtype: table,
|
|
55
|
+
query: '',
|
|
56
|
+
oper: '',
|
|
64
57
|
page: page,
|
|
65
58
|
rp: rowsPerPage,
|
|
66
59
|
sortname: `${table}.${sortName}`,
|
|
67
|
-
sortorder: sortOrder
|
|
68
|
-
|
|
60
|
+
sortorder: sortOrder,
|
|
61
|
+
grid_param: JSON.stringify(grid_param)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
qtype: `${table}.${params.TB}`,
|
|
66
|
+
query: params.P,
|
|
67
|
+
oper: params.OP || '=',
|
|
68
|
+
page: page,
|
|
69
|
+
rp: rowsPerPage,
|
|
70
|
+
sortname: `${table}.${sortName}`,
|
|
71
|
+
sortorder: sortOrder
|
|
72
|
+
};
|
|
69
73
|
}
|
package/dist/types.d.ts
CHANGED