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 CHANGED
@@ -34,8 +34,8 @@ class Contrato extends IXCClient {
34
34
  ```typescript
35
35
  const contrato = new Contrato();
36
36
 
37
- contrato
38
- .where('id', 240)
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.
@@ -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 dentro do banco de dados do seu servidor IXC
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
- * Operadores: =, !=, >, <, >=, <=, LIKE
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/valor" contendo as informações do novo registro
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/valor" contendo as colunas que serão alteradas
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 dentro do banco de dados do seu servidor IXC
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
- * Operadores: =, !=, >, <, >=, <=, LIKE
47
- *
48
- * @returns
46
+ * Operadores válidos: =, !=, >, <, >=, <=, LIKE
47
+ * @returns A própria instância
49
48
  */
50
49
  where(whereClauses) {
51
- const [column, operatorOrValue, valueOrUndefined] = whereClauses;
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: column,
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/valor" contendo as informações do novo registro
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/valor" contendo as colunas que serão alteradas
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 instânxia de um objeto do tipo AxiosInstance, pre-confugurado com os cabeçalhos necessários
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 tabelado IXC onde será feita a busca, atualização, inserção ou remoção
12
- * @param params Parâmetros da busca (desconciderado em cadastros de novos registros)
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 instânxia de um objeto do tipo AxiosInstance, pre-confugurado com os cabeçalhos necessários
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:3000/webservice/v1',
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 tabelado IXC onde será feita a busca, atualização, inserção ou remoção
30
- * @param params Parâmetros da busca (desconciderado em cadastros de novos registros)
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ixc-orm",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",
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 dentro do banco de dados do seu servidor IXC
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
- * Operadores: =, !=, >, <, >=, <=, LIKE
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
- column,
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: column,
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/valor" contendo as informações do novo registro
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/valor" contendo as colunas que serão alteradas
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 instânxia de um objeto do tipo AxiosInstance, pre-confugurado com os cabeçalhos necessários
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:3000/webservice/v1',
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 tabelado IXC onde será feita a busca, atualização, inserção ou remoção
32
- * @param params Parâmetros da busca (desconciderado em cadastros de novos registros)
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
  */