ixc-orm 1.4.2 → 1.4.3

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 CHANGED
@@ -1,4 +1,4 @@
1
- # IXC-ORM
1
+ # IXC-ORM [![npm](https://img.shields.io/npm/dt/ixc-orm.svg)](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.
@@ -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: se você passar um array no formato [coluna, valor] o operador será considerado como '='
17
- * Operadores válidos: =, !=, >, <, >=, <=, LIKE
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,32 @@ export default abstract class IXCClient {
26
27
  */
27
28
  orderBy(column: string, order: keyof typeof IXCSortOrder): IXCClient;
28
29
  /**
30
+ * Envia uma solicitação GET para a API do IXC, com o header `ixcsoft` definico como `listar`
31
+ * Preenche o corpo da requisição com os dados passados pela função `where` no formado JSON
29
32
  *
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<null | IXCResponse | AxiosError>
33
+ * @param pg O número da página que será solicitada ao IXC `padão = 1`
34
+ * @param rows A quantidade de linhas (registros) por página `padrão = 20`
35
+ * @returns Promise<IXCResponse>
33
36
  */
34
- get(pg?: number, rows?: number): Promise<null | IXCResponse | AxiosError>;
37
+ get(pg?: number, rows?: number): Promise<IXCResponse>;
35
38
  /**
39
+ * Envia uma requisição do tipo `POST` para a API do IXC, com o header `ixcsoft` vazio
36
40
  *
37
41
  * @param body Um objeto no formado "chave: valor" contendo as informações do novo registro
38
42
  * a ser inserido no banco de dados do seu servidor IXC
39
- * @returns Promise<null | IXCResponse | AxiosError>
43
+ * @returns Promise<IXCResponse>
40
44
  */
41
45
  post(body?: {
42
46
  [key: string]: any;
43
- }): Promise<null | IXCResponse | AxiosError>;
47
+ }): Promise<IXCResponse>;
44
48
  /**
49
+ * Envia uma requisição do tipo `PUT` para a API do IXC, com o header `ixcsoft` vazio
45
50
  *
46
51
  * @param id O id do registro que será alterado
47
52
  * @param body Um objeto no formado "chave : valor" contendo as colunas que serão alteradas
48
- * @returns Promise<null | IXCResponse | AxiosError>
53
+ * @returns Promise<IXCResponse>
49
54
  */
50
55
  put(id: number, body?: {
51
56
  [key: string]: any;
52
- }): Promise<null | IXCResponse | AxiosError>;
57
+ }): Promise<IXCResponse>;
53
58
  }
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: se você passar um array no formato [coluna, valor] o operador será considerado como '='
46
- * Operadores válidos: =, !=, >, <, >=, <=, LIKE
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,36 @@ class IXCClient {
74
76
  return this;
75
77
  }
76
78
  /**
79
+ * Envia uma solicitação GET para a API do IXC, com o header `ixcsoft` definico como `listar`
80
+ * Preenche o corpo da requisição com os dados passados pela função `where` no formado JSON
77
81
  *
78
- * @param pg O número da página que será solicitada ao IXC
79
- * @param rows A quantidade de linhas (registros) por página
80
- * @returns Promise<null | IXCResponse | AxiosError>
82
+ * @param pg O número da página que será solicitada ao IXC `padão = 1`
83
+ * @param rows A quantidade de linhas (registros) por página `padrão = 20`
84
+ * @returns Promise<IXCResponse>
81
85
  */
82
86
  get(pg, rows) {
83
87
  return __awaiter(this, void 0, void 0, function* () {
84
- const _a = this.options, { page, rowsPerPage } = _a, rest = __rest(_a, ["page", "rowsPerPage"]);
88
+ var _a, _b;
89
+ const _c = this.options, { page, rowsPerPage } = _c, rest = __rest(_c, ["page", "rowsPerPage"]);
85
90
  const opts = Object.assign({ page: pg !== null && pg !== void 0 ? pg : page, rowsPerPage: rows !== null && rows !== void 0 ? rows : rowsPerPage }, rest);
86
91
  const axios = (0, request_1.createAxiosInstance)('GET');
87
92
  const payload = (0, request_1.createRequestPayload)(this.table, this.params, opts);
88
93
  try {
89
94
  const response = yield axios.get(this.table, payload);
90
- return response.data;
95
+ if (response.status === 200) {
96
+ return response.data;
97
+ }
98
+ return (0, response_1.createResponse)({
99
+ error: true,
100
+ message: (_a = response.data) === null || _a === void 0 ? void 0 : _a.message
101
+ });
91
102
  }
92
103
  catch (error) {
93
104
  console.error(error);
94
- if (error instanceof axios_1.AxiosError) {
95
- return error;
96
- }
97
- return null;
105
+ return (0, response_1.createResponse)({
106
+ error: true,
107
+ message: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText) || error.message || 'Erro desconhecido'
108
+ });
98
109
  }
99
110
  finally {
100
111
  this.params = [];
@@ -108,24 +119,32 @@ class IXCClient {
108
119
  });
109
120
  }
110
121
  /**
122
+ * Envia uma requisição do tipo `POST` para a API do IXC, com o header `ixcsoft` vazio
111
123
  *
112
124
  * @param body Um objeto no formado "chave: valor" contendo as informações do novo registro
113
125
  * a ser inserido no banco de dados do seu servidor IXC
114
- * @returns Promise<null | IXCResponse | AxiosError>
126
+ * @returns Promise<IXCResponse>
115
127
  */
116
128
  post(body) {
117
129
  return __awaiter(this, void 0, void 0, function* () {
130
+ var _a, _b;
118
131
  const axios = (0, request_1.createAxiosInstance)('POST');
119
132
  try {
120
133
  const response = yield axios.post(this.table, { data: body });
121
- return response.data;
134
+ if (response.status === 200) {
135
+ return response.data;
136
+ }
137
+ return (0, response_1.createResponse)({
138
+ error: true,
139
+ message: (_a = response.data) === null || _a === void 0 ? void 0 : _a.message
140
+ });
122
141
  }
123
142
  catch (error) {
124
143
  console.error(error);
125
- if (error instanceof axios_1.AxiosError) {
126
- return error;
127
- }
128
- return null;
144
+ return (0, response_1.createResponse)({
145
+ error: true,
146
+ message: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText) || error.message || 'Erro desconhecido'
147
+ });
129
148
  }
130
149
  finally {
131
150
  this.params = [];
@@ -133,24 +152,32 @@ class IXCClient {
133
152
  });
134
153
  }
135
154
  /**
155
+ * Envia uma requisição do tipo `PUT` para a API do IXC, com o header `ixcsoft` vazio
136
156
  *
137
157
  * @param id O id do registro que será alterado
138
158
  * @param body Um objeto no formado "chave : valor" contendo as colunas que serão alteradas
139
- * @returns Promise<null | IXCResponse | AxiosError>
159
+ * @returns Promise<IXCResponse>
140
160
  */
141
161
  put(id, body) {
142
162
  return __awaiter(this, void 0, void 0, function* () {
163
+ var _a, _b;
143
164
  const axios = (0, request_1.createAxiosInstance)('PUT');
144
165
  try {
145
166
  const response = yield axios.put(`${this.table}/${id}`, { data: body });
146
- return response.data;
167
+ if (response.status === 200) {
168
+ return response.data;
169
+ }
170
+ return (0, response_1.createResponse)({
171
+ error: true,
172
+ message: (_a = response.data) === null || _a === void 0 ? void 0 : _a.message
173
+ });
147
174
  }
148
175
  catch (error) {
149
176
  console.error(error);
150
- if (error instanceof axios_1.AxiosError) {
151
- return error;
152
- }
153
- return null;
177
+ return (0, response_1.createResponse)({
178
+ error: true,
179
+ message: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText) || error.message || 'Erro desconhecido'
180
+ });
154
181
  }
155
182
  finally {
156
183
  this.params = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ixc-orm",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",