ixc-orm 1.0.1 → 1.1.1
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 +6 -3
- package/dist/IXCClient.d.ts +5 -7
- package/dist/IXCClient.js +15 -9
- package/dist/request.d.ts +3 -3
- package/dist/request.js +4 -4
- package/package.json +1 -1
- package/src/IXCClient.ts +23 -11
- package/src/request.ts +5 -7
package/README.md
CHANGED
|
@@ -34,8 +34,8 @@ class Contrato extends IXCClient {
|
|
|
34
34
|
```typescript
|
|
35
35
|
const contrato = new Contrato();
|
|
36
36
|
|
|
37
|
-
contrato
|
|
38
|
-
.where('
|
|
37
|
+
const contratos = await contrato
|
|
38
|
+
.where(['id_cliente', 240])
|
|
39
39
|
.where(['data_ativacao', '>=', '2024-09-24 00:45:00'])
|
|
40
40
|
.orderBy('data_ativacao', 'desc')
|
|
41
41
|
.get();
|
|
@@ -48,4 +48,7 @@ Para configurar a comunicação da biblioteca com seu servidor IXC, é necessár
|
|
|
48
48
|
|
|
49
49
|
`IXC_HOST`
|
|
50
50
|
|
|
51
|
-
`IXC_TOKEN`
|
|
51
|
+
`IXC_TOKEN`
|
|
52
|
+
|
|
53
|
+
> **IXC_HOST** deve conter a url do seu servidor IXC, no formato: `https://seudominio.com.br/webservice/v1`
|
|
54
|
+
> **IXC_TOKEN** deve conter um token de API gerado dentro do seu sistema IXCsoft.
|
package/dist/IXCClient.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export default abstract class IXCClient {
|
|
|
6
6
|
protected options: IXCOptions;
|
|
7
7
|
/**
|
|
8
8
|
*
|
|
9
|
-
* @param table O nome da tabela
|
|
9
|
+
* @param table O nome da tabela correspondente ao banco de dados do seu servidor IXC
|
|
10
10
|
* @see {@link https://wikiapiprovedor.ixcsoft.com.br/index.php}
|
|
11
11
|
*/
|
|
12
12
|
constructor(table: string);
|
|
@@ -14,10 +14,8 @@ export default abstract class IXCClient {
|
|
|
14
14
|
*
|
|
15
15
|
* @param whereClauses Um array de strings, no formato [coluna, operador, valor]
|
|
16
16
|
* Obs: se você passar um array no formato [coluna, valor] o operador será considerado como '='
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* @returns
|
|
17
|
+
* Operadores válidos: =, !=, >, <, >=, <=, LIKE
|
|
18
|
+
* @returns A própria instância
|
|
21
19
|
*/
|
|
22
20
|
where(whereClauses: string[]): IXCClient;
|
|
23
21
|
/**
|
|
@@ -36,7 +34,7 @@ export default abstract class IXCClient {
|
|
|
36
34
|
get(pg?: number, rows?: number): Promise<null | IXCResponse | AxiosError>;
|
|
37
35
|
/**
|
|
38
36
|
*
|
|
39
|
-
* @param body Um objeto no formado "chave
|
|
37
|
+
* @param body Um objeto no formado "chave: valor" contendo as informações do novo registro
|
|
40
38
|
* a ser inserido no banco de dados do seu servidor IXC
|
|
41
39
|
* @returns Promise<null | IXCResponse | AxiosError>
|
|
42
40
|
*/
|
|
@@ -46,7 +44,7 @@ export default abstract class IXCClient {
|
|
|
46
44
|
/**
|
|
47
45
|
*
|
|
48
46
|
* @param id O id do registro que será alterado
|
|
49
|
-
* @param body Um objeto no formado "chave
|
|
47
|
+
* @param body Um objeto no formado "chave : valor" contendo as colunas que serão alteradas
|
|
50
48
|
* @returns Promise<null | IXCResponse | AxiosError>
|
|
51
49
|
*/
|
|
52
50
|
put(id: number, body?: {
|
package/dist/IXCClient.js
CHANGED
|
@@ -22,10 +22,11 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
const axios_1 = require("axios");
|
|
24
24
|
const request_1 = require("./request");
|
|
25
|
+
const types_1 = require("./types");
|
|
25
26
|
class IXCClient {
|
|
26
27
|
/**
|
|
27
28
|
*
|
|
28
|
-
* @param table O nome da tabela
|
|
29
|
+
* @param table O nome da tabela correspondente ao banco de dados do seu servidor IXC
|
|
29
30
|
* @see {@link https://wikiapiprovedor.ixcsoft.com.br/index.php}
|
|
30
31
|
*/
|
|
31
32
|
constructor(table) {
|
|
@@ -42,15 +43,20 @@ class IXCClient {
|
|
|
42
43
|
*
|
|
43
44
|
* @param whereClauses Um array de strings, no formato [coluna, operador, valor]
|
|
44
45
|
* Obs: se você passar um array no formato [coluna, valor] o operador será considerado como '='
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* @returns
|
|
46
|
+
* Operadores válidos: =, !=, >, <, >=, <=, LIKE
|
|
47
|
+
* @returns A própria instância
|
|
49
48
|
*/
|
|
50
49
|
where(whereClauses) {
|
|
51
|
-
|
|
50
|
+
if (whereClauses.length > 3) {
|
|
51
|
+
throw new Error(`> O array de cláusulas não pode conter mais de 3 elementos!`);
|
|
52
|
+
}
|
|
53
|
+
const [alwaysColumn, operatorOrValue, valueOrUndefined] = whereClauses;
|
|
54
|
+
const availableOperators = Object.keys(types_1.IXCOperator);
|
|
55
|
+
if (whereClauses.length > 2 && !availableOperators.includes(operatorOrValue)) {
|
|
56
|
+
throw new Error(`> O operador ${operatorOrValue}, não faz parte dos operadores válidos: ${availableOperators}`);
|
|
57
|
+
}
|
|
52
58
|
this.params.push({
|
|
53
|
-
TB:
|
|
59
|
+
TB: alwaysColumn,
|
|
54
60
|
OP: valueOrUndefined ? operatorOrValue : '=',
|
|
55
61
|
P: valueOrUndefined ? valueOrUndefined : operatorOrValue
|
|
56
62
|
});
|
|
@@ -103,7 +109,7 @@ class IXCClient {
|
|
|
103
109
|
}
|
|
104
110
|
/**
|
|
105
111
|
*
|
|
106
|
-
* @param body Um objeto no formado "chave
|
|
112
|
+
* @param body Um objeto no formado "chave: valor" contendo as informações do novo registro
|
|
107
113
|
* a ser inserido no banco de dados do seu servidor IXC
|
|
108
114
|
* @returns Promise<null | IXCResponse | AxiosError>
|
|
109
115
|
*/
|
|
@@ -129,7 +135,7 @@ class IXCClient {
|
|
|
129
135
|
/**
|
|
130
136
|
*
|
|
131
137
|
* @param id O id do registro que será alterado
|
|
132
|
-
* @param body Um objeto no formado "chave
|
|
138
|
+
* @param body Um objeto no formado "chave : valor" contendo as colunas que serão alteradas
|
|
133
139
|
* @returns Promise<null | IXCResponse | AxiosError>
|
|
134
140
|
*/
|
|
135
141
|
put(id, body) {
|
package/dist/request.d.ts
CHANGED
|
@@ -3,13 +3,13 @@ import { IXCOptions, IXCQuery, IXCRequest, IXCRequestMethods } from './types';
|
|
|
3
3
|
/**
|
|
4
4
|
*
|
|
5
5
|
* @param method GET | POST | PUT
|
|
6
|
-
* @returns A
|
|
6
|
+
* @returns A instância de um objeto do tipo AxiosInstance, pré-configurado com os cabeçalhos necessários
|
|
7
7
|
*/
|
|
8
8
|
export declare function createAxiosInstance(method?: keyof typeof IXCRequestMethods): AxiosInstance;
|
|
9
9
|
/**
|
|
10
10
|
*
|
|
11
|
-
* @param table Nome da
|
|
12
|
-
* @param params Parâmetros da busca (desconciderado
|
|
11
|
+
* @param table Nome da tabela do IXC onde será feita a busca, atualização, inserção ou remoção
|
|
12
|
+
* @param params Parâmetros da busca (desconciderado quando a ação é a de inserir novos registros)
|
|
13
13
|
* @param options Parâmetros de formatação dos dados da responsta (página, ítens por página e ordenação)
|
|
14
14
|
* @returns
|
|
15
15
|
*/
|
package/dist/request.js
CHANGED
|
@@ -9,14 +9,14 @@ const axios_1 = __importDefault(require("axios"));
|
|
|
9
9
|
/**
|
|
10
10
|
*
|
|
11
11
|
* @param method GET | POST | PUT
|
|
12
|
-
* @returns A
|
|
12
|
+
* @returns A instância de um objeto do tipo AxiosInstance, pré-configurado com os cabeçalhos necessários
|
|
13
13
|
*/
|
|
14
14
|
function createAxiosInstance(method = 'GET') {
|
|
15
15
|
const host = process.env.IXC_HOST;
|
|
16
16
|
const token = process.env.IXC_TOKEN;
|
|
17
17
|
return axios_1.default.create({
|
|
18
18
|
method: method,
|
|
19
|
-
baseURL: host !== null && host !== void 0 ? host : 'http://127.0.0.1
|
|
19
|
+
baseURL: host !== null && host !== void 0 ? host : 'http://127.0.0.1/webservice/v1',
|
|
20
20
|
headers: {
|
|
21
21
|
'ixcsoft': (method === 'GET') ? 'listar' : '',
|
|
22
22
|
'Content-Type': 'application/json',
|
|
@@ -26,8 +26,8 @@ function createAxiosInstance(method = 'GET') {
|
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
*
|
|
29
|
-
* @param table Nome da
|
|
30
|
-
* @param params Parâmetros da busca (desconciderado
|
|
29
|
+
* @param table Nome da tabela do IXC onde será feita a busca, atualização, inserção ou remoção
|
|
30
|
+
* @param params Parâmetros da busca (desconciderado quando a ação é a de inserir novos registros)
|
|
31
31
|
* @param options Parâmetros de formatação dos dados da responsta (página, ítens por página e ordenação)
|
|
32
32
|
* @returns
|
|
33
33
|
*/
|
package/package.json
CHANGED
package/src/IXCClient.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AxiosError } from 'axios';
|
|
2
2
|
import { createAxiosInstance, createRequestPayload } from './request';
|
|
3
|
-
import { IXCOptions, IXCQuery, IXCResponse, IXCSortOrder } from './types';
|
|
3
|
+
import { IXCOperator, IXCOptions, IXCQuery, IXCResponse, IXCSortOrder } from './types';
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@ export default abstract class IXCClient {
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
*
|
|
17
|
-
* @param table O nome da tabela
|
|
17
|
+
* @param table O nome da tabela correspondente ao banco de dados do seu servidor IXC
|
|
18
18
|
* @see {@link https://wikiapiprovedor.ixcsoft.com.br/index.php}
|
|
19
19
|
*/
|
|
20
20
|
constructor(table: string) {
|
|
@@ -35,26 +35,38 @@ export default abstract class IXCClient {
|
|
|
35
35
|
*
|
|
36
36
|
* @param whereClauses Um array de strings, no formato [coluna, operador, valor]
|
|
37
37
|
* Obs: se você passar um array no formato [coluna, valor] o operador será considerado como '='
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* @returns
|
|
38
|
+
* Operadores válidos: =, !=, >, <, >=, <=, LIKE
|
|
39
|
+
* @returns A própria instância
|
|
42
40
|
*/
|
|
43
41
|
where(whereClauses: string[]) : IXCClient {
|
|
42
|
+
|
|
43
|
+
if (whereClauses.length > 3) {
|
|
44
|
+
throw new Error(
|
|
45
|
+
`> O array de cláusulas não pode conter mais de 3 elementos!`
|
|
46
|
+
);
|
|
47
|
+
}
|
|
44
48
|
|
|
45
49
|
const [
|
|
46
|
-
|
|
50
|
+
alwaysColumn,
|
|
47
51
|
operatorOrValue,
|
|
48
52
|
valueOrUndefined
|
|
49
53
|
] = whereClauses;
|
|
50
54
|
|
|
55
|
+
const availableOperators = Object.keys(IXCOperator);
|
|
56
|
+
|
|
57
|
+
if (whereClauses.length > 2 && !availableOperators.includes(operatorOrValue)) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
`> O operador ${ operatorOrValue }, não faz parte dos operadores válidos: ${ availableOperators }`
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
51
63
|
this.params.push({
|
|
52
|
-
TB:
|
|
64
|
+
TB: alwaysColumn,
|
|
53
65
|
OP: valueOrUndefined ? operatorOrValue : '=',
|
|
54
66
|
P: valueOrUndefined ? valueOrUndefined : operatorOrValue
|
|
55
67
|
});
|
|
56
68
|
|
|
57
|
-
return this
|
|
69
|
+
return this;
|
|
58
70
|
}
|
|
59
71
|
|
|
60
72
|
|
|
@@ -117,7 +129,7 @@ export default abstract class IXCClient {
|
|
|
117
129
|
|
|
118
130
|
/**
|
|
119
131
|
*
|
|
120
|
-
* @param body Um objeto no formado "chave
|
|
132
|
+
* @param body Um objeto no formado "chave: valor" contendo as informações do novo registro
|
|
121
133
|
* a ser inserido no banco de dados do seu servidor IXC
|
|
122
134
|
* @returns Promise<null | IXCResponse | AxiosError>
|
|
123
135
|
*/
|
|
@@ -146,7 +158,7 @@ export default abstract class IXCClient {
|
|
|
146
158
|
/**
|
|
147
159
|
*
|
|
148
160
|
* @param id O id do registro que será alterado
|
|
149
|
-
* @param body Um objeto no formado "chave
|
|
161
|
+
* @param body Um objeto no formado "chave : valor" contendo as colunas que serão alteradas
|
|
150
162
|
* @returns Promise<null | IXCResponse | AxiosError>
|
|
151
163
|
*/
|
|
152
164
|
async put(id: number, body?: { [key: string]: any }) : Promise<null | IXCResponse | AxiosError> {
|
package/src/request.ts
CHANGED
|
@@ -5,18 +5,16 @@ import { IXCOptions, IXCQuery, IXCRequest, IXCRequestMethods } from './types';
|
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
7
7
|
* @param method GET | POST | PUT
|
|
8
|
-
* @returns A
|
|
8
|
+
* @returns A instância de um objeto do tipo AxiosInstance, pré-configurado com os cabeçalhos necessários
|
|
9
9
|
*/
|
|
10
|
-
export function createAxiosInstance(
|
|
11
|
-
method: keyof typeof IXCRequestMethods = 'GET'
|
|
12
|
-
) : AxiosInstance {
|
|
10
|
+
export function createAxiosInstance(method: keyof typeof IXCRequestMethods = 'GET') : AxiosInstance {
|
|
13
11
|
|
|
14
12
|
const host = process.env.IXC_HOST;
|
|
15
13
|
const token = process.env.IXC_TOKEN;
|
|
16
14
|
|
|
17
15
|
return axios.create({
|
|
18
16
|
method: method,
|
|
19
|
-
baseURL: host ?? 'http://127.0.0.1
|
|
17
|
+
baseURL: host ?? 'http://127.0.0.1/webservice/v1',
|
|
20
18
|
headers: {
|
|
21
19
|
'ixcsoft': (method === 'GET') ? 'listar' : '',
|
|
22
20
|
'Content-Type': 'application/json',
|
|
@@ -28,8 +26,8 @@ export function createAxiosInstance(
|
|
|
28
26
|
|
|
29
27
|
/**
|
|
30
28
|
*
|
|
31
|
-
* @param table Nome da
|
|
32
|
-
* @param params Parâmetros da busca (desconciderado
|
|
29
|
+
* @param table Nome da tabela do IXC onde será feita a busca, atualização, inserção ou remoção
|
|
30
|
+
* @param params Parâmetros da busca (desconciderado quando a ação é a de inserir novos registros)
|
|
33
31
|
* @param options Parâmetros de formatação dos dados da responsta (página, ítens por página e ordenação)
|
|
34
32
|
* @returns
|
|
35
33
|
*/
|