exodus-framework 2.0.731 → 2.0.732

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.
@@ -49,12 +49,24 @@ export declare enum EApiRequestMethod {
49
49
  DELETE = "delete",
50
50
  PATCH = "patch"
51
51
  }
52
+ export type SimpleCondition = {
53
+ eq?: any;
54
+ gt?: any;
55
+ lt?: any;
56
+ between?: [any, any];
57
+ notBetween?: [any, any];
58
+ };
59
+ export type LogicalCondition = {
60
+ or?: SimpleCondition[];
61
+ and?: SimpleCondition[];
62
+ };
63
+ export type IRequestFilterCondition = SimpleCondition & LogicalCondition;
52
64
  export interface IRequestListData<D> {
53
65
  page: number;
54
66
  limit?: number;
55
67
  orderBy?: keyof D;
56
68
  order?: 'ASC' | 'DESC';
57
- filters?: Record<keyof D, any>;
69
+ filters?: Record<keyof D, IRequestFilterCondition>;
58
70
  }
59
71
  export interface IResponseListData<D> {
60
72
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/contracts/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAOzC,MAAM,CAAC,OAAO,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAO3E,MAAM,CAAC,OAAO,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,CAAC;CACV,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,oBAAY,iBAAiB;IAE3B,QAAQ,MAAM;IACd,QAAQ,MAAM;IACd,OAAO,MAAM;IACb,gCAAgC,MAAM;IAEtC,yBAAyB,MAAM;IAC/B,sBAAsB,MAAM;IAG5B,iBAAiB,MAAM;IACvB,mBAAmB,MAAM;IACzB,wBAAwB,MAAM;IAC9B,oBAAoB,MAAM;IAG1B,WAAW,MAAM;IACjB,gBAAgB,MAAM;IACtB,kBAAkB,MAAM;IACxB,wBAAwB,MAAM;IAC9B,cAAc,MAAM;IACpB,uBAAuB,MAAM;IAC7B,kBAAkB,MAAM;CACzB;AACD,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;CAChC;AACD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,EAAE,CAAC;CACX;AAED,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,MAAM,YAAY,CAAC,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/contracts/http.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
+ import { WhereOptions } from '@sequelize/core';
1
2
  import { Sequelize } from 'sequelize';
3
+ import { IRequestFilterCondition } from '../contracts';
2
4
  export declare const serviceDB: Sequelize;
3
5
  export declare const masterDB: Sequelize;
6
+ export declare function processFilters<D>(filters?: Record<keyof D, IRequestFilterCondition>): WhereOptions<D>;
4
7
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,eAAO,MAAM,SAAS,WAYpB,CAAC;AAEH,eAAO,MAAM,QAAQ,WAYnB,CAAC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAM,SAAS,EAA2B,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,eAAO,MAAM,SAAS,WAYpB,CAAC;AAEH,eAAO,MAAM,QAAQ,WAYnB,CAAC;AAsCH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,GACjD,YAAY,CAAC,CAAC,CAAC,CA+BjB"}
@@ -3,10 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.serviceDB = exports.masterDB = void 0;
6
+ exports.masterDB = void 0;
7
+ exports.processFilters = processFilters;
8
+ exports.serviceDB = void 0;
7
9
  var _sequelize = require("sequelize");
8
- var _logger = _interopRequireDefault(require("./logger"));
9
10
  var _app = require("../app");
11
+ var _logger = _interopRequireDefault(require("./logger"));
10
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
13
  const serviceDB = exports.serviceDB = new _sequelize.Sequelize({
12
14
  database: _app.Core.settings.getDatabase().service.database,
@@ -33,4 +35,65 @@ const masterDB = exports.masterDB = new _sequelize.Sequelize({
33
35
  logging(sql, timing) {
34
36
  (0, _logger.default)().trace('DATABASE', sql, timing);
35
37
  }
36
- });
38
+ });
39
+
40
+ // Função recursiva para processar condições simples e lógicas
41
+ function processCondition(cond) {
42
+ if ('or' in cond) {
43
+ return {
44
+ [_sequelize.Op.or]: cond.or.map(subCond => processCondition(subCond))
45
+ };
46
+ }
47
+ if ('and' in cond) {
48
+ return {
49
+ [_sequelize.Op.and]: cond.and.map(subCond => processCondition(subCond))
50
+ };
51
+ }
52
+ const simpleWhere = {};
53
+ if (cond.eq !== undefined) {
54
+ simpleWhere[_sequelize.Op.eq] = cond.eq;
55
+ }
56
+ if (cond.gt !== undefined) {
57
+ simpleWhere[_sequelize.Op.gt] = cond.gt;
58
+ }
59
+ if (cond.lt !== undefined) {
60
+ simpleWhere[_sequelize.Op.lt] = cond.lt;
61
+ }
62
+ if (cond.between !== undefined) {
63
+ simpleWhere[_sequelize.Op.between] = cond.between;
64
+ }
65
+ if (cond.notBetween !== undefined) {
66
+ simpleWhere[_sequelize.Op.notBetween] = cond.notBetween;
67
+ }
68
+ return simpleWhere;
69
+ }
70
+
71
+ // Função principal para processar os filtros
72
+ function processFilters(filters) {
73
+ if (!filters) {
74
+ return {};
75
+ }
76
+ const where = {};
77
+ Object.entries(filters).forEach(([key, condition]) => {
78
+ const field = key;
79
+ const processedCondition = processCondition(condition);
80
+
81
+ // Verifica se a condição é uma condição lógica global (Op.or ou Op.and)
82
+ if (processedCondition[_sequelize.Op.or] || processedCondition[_sequelize.Op.and]) {
83
+ // Mescla as condições lógicas no objeto where
84
+ Object.assign(where, processedCondition);
85
+ } else {
86
+ // Caso contrário, aplica a condição no campo específico
87
+ if (where[field] && typeof where[field] === 'object') {
88
+ // Combina múltiplas condições no mesmo campo com Op.and
89
+ where[field] = {
90
+ ...where[field],
91
+ ...processedCondition
92
+ };
93
+ } else {
94
+ where[field] = processedCondition;
95
+ }
96
+ }
97
+ });
98
+ return where;
99
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exodus-framework",
3
- "version": "2.0.731",
3
+ "version": "2.0.732",
4
4
  "description": "Exodus Framework",
5
5
  "author": "jhownpaixao",
6
6
  "license": "ISC",