namirasoft-node 1.4.41 → 1.4.43

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.
@@ -2,6 +2,7 @@ import * as express from "express";
2
2
  import { FilterItem, SortItem } from "namirasoft-core";
3
3
  export interface BaseDatabase_FilterTable {
4
4
  join_conditions?: BaseDatabase_FilterTable_JoinConditions;
5
+ overrideColumnName?: (column: string) => string;
5
6
  }
6
7
  export interface BaseDatabase_FilterTable_JoinConditions {
7
8
  main: {
@@ -13,78 +14,77 @@ export interface BaseDatabase_FilterTable_JoinConditions {
13
14
  column: string;
14
15
  };
15
16
  getExtraConditions?: (column: string) => string[];
16
- overrideColumnName?: (column: string) => string;
17
17
  }
18
18
  export interface IFilterableDatabase<WhereOptions> {
19
- getIn: (filter: FilterItem, values: string[]) => {
19
+ getIn: (filter: FilterItem, column_name: string, values: string[]) => {
20
20
  condition: WhereOptions;
21
21
  partial: boolean;
22
22
  };
23
- getNotIn: (filter: FilterItem, values: string[]) => {
23
+ getNotIn: (filter: FilterItem, column_name: string, values: string[]) => {
24
24
  condition: WhereOptions;
25
25
  partial: boolean;
26
26
  };
27
- getLike: (filter: FilterItem, value: string) => {
27
+ getLike: (filter: FilterItem, column_name: string, value: string) => {
28
28
  condition: WhereOptions;
29
29
  partial: boolean;
30
30
  };
31
- getNotLike: (filter: FilterItem, value: string) => {
31
+ getNotLike: (filter: FilterItem, column_name: string, value: string) => {
32
32
  condition: WhereOptions;
33
33
  partial: boolean;
34
34
  };
35
- getRegex: (filter: FilterItem, value: string) => {
35
+ getRegex: (filter: FilterItem, column_name: string, value: string) => {
36
36
  condition: WhereOptions;
37
37
  partial: boolean;
38
38
  };
39
- getNotRegex: (filter: FilterItem, value: string) => {
39
+ getNotRegex: (filter: FilterItem, column_name: string, value: string) => {
40
40
  condition: WhereOptions;
41
41
  partial: boolean;
42
42
  };
43
- getEmpty: (filter: FilterItem) => {
43
+ getEmpty: (filter: FilterItem, column_name: string) => {
44
44
  condition: WhereOptions;
45
45
  partial: boolean;
46
46
  };
47
- getNotEmpty: (filter: FilterItem) => {
47
+ getNotEmpty: (filter: FilterItem, column_name: string) => {
48
48
  condition: WhereOptions;
49
49
  partial: boolean;
50
50
  };
51
- getExists: (filter: FilterItem, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions) => {
51
+ getExists: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions) => {
52
52
  condition: WhereOptions;
53
53
  partial: boolean;
54
54
  };
55
- getIncludes: (filter: FilterItem, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions, value: string[]) => {
55
+ getIncludes: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions, value: string[]) => {
56
56
  condition: WhereOptions;
57
57
  partial: boolean;
58
58
  };
59
- getStartsWith: (filter: FilterItem, value: string) => {
59
+ getStartsWith: (filter: FilterItem, column_name: string, value: string) => {
60
60
  condition: WhereOptions;
61
61
  partial: boolean;
62
62
  };
63
- getNotStartsWith: (filter: FilterItem, value: string) => {
63
+ getNotStartsWith: (filter: FilterItem, column_name: string, value: string) => {
64
64
  condition: WhereOptions;
65
65
  partial: boolean;
66
66
  };
67
- getEndsWith: (filter: FilterItem, value: string) => {
67
+ getEndsWith: (filter: FilterItem, column_name: string, value: string) => {
68
68
  condition: WhereOptions;
69
69
  partial: boolean;
70
70
  };
71
- getNotEndsWith: (filter: FilterItem, value: string) => {
71
+ getNotEndsWith: (filter: FilterItem, column_name: string, value: string) => {
72
72
  condition: WhereOptions;
73
73
  partial: boolean;
74
74
  };
75
- getLT: (filter: FilterItem, value: any) => {
75
+ getLT: (filter: FilterItem, column_name: string, value: any) => {
76
76
  condition: WhereOptions;
77
77
  partial: boolean;
78
78
  };
79
- getLTE: (filter: FilterItem, value: any) => {
79
+ getLTE: (filter: FilterItem, column_name: string, value: any) => {
80
80
  condition: WhereOptions;
81
81
  partial: boolean;
82
82
  };
83
- getGT: (filter: FilterItem, value: any) => {
83
+ getGT: (filter: FilterItem, column_name: string, value: any) => {
84
84
  condition: WhereOptions;
85
85
  partial: boolean;
86
86
  };
87
- getGTE: (filter: FilterItem, value: any) => {
87
+ getGTE: (filter: FilterItem, column_name: string, value: any) => {
88
88
  condition: WhereOptions;
89
89
  partial: boolean;
90
90
  };
@@ -107,7 +107,8 @@ export declare abstract class BaseDatabase {
107
107
  protected _getFiltersConditions<WhereOptions>(tables: {
108
108
  [table: string]: BaseDatabase_FilterTable;
109
109
  }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): {
110
- [table: string]: WhereOptions[];
110
+ conditions: WhereOptions[];
111
+ joins: string[];
111
112
  };
112
113
  abstract getSortOptions(sorts?: SortItem[] | undefined): any;
113
114
  }
@@ -45,15 +45,17 @@ class BaseDatabase {
45
45
  return { offset, limit };
46
46
  }
47
47
  _getFiltersConditions(tables, idatabase, filters) {
48
- let ans = {};
49
- Object.keys(tables).forEach(table => ans[table] = []);
48
+ var _a, _b;
49
+ let ans = { conditions: [], joins: [] };
50
50
  if (filters) {
51
51
  let processed = {};
52
52
  for (let i = 0; i < filters.length; i++)
53
53
  if (!processed[i]) {
54
54
  const filter = filters[i];
55
+ let table = tables[filter.table.name];
55
56
  let t = this.getTable(filter.table.name);
56
- t.checkColumn(filter.column.name, false, null);
57
+ let column_name = (_b = (_a = table === null || table === void 0 ? void 0 : table.overrideColumnName) === null || _a === void 0 ? void 0 : _a.call(table, filter.column.name)) !== null && _b !== void 0 ? _b : filter.column.name;
58
+ t.checkColumn(column_name, false, null);
57
59
  let values = filter.values;
58
60
  if (filter.operator.count > 0)
59
61
  for (let j = i + 1; j < filters.length; j++) {
@@ -75,91 +77,91 @@ class BaseDatabase {
75
77
  let addCondition = (res) => {
76
78
  if (res.partial) {
77
79
  let wh = {};
78
- wh[filter.column.name] = res.condition;
79
- ans[filter.table.name].push(wh);
80
+ wh[column_name] = res.condition;
81
+ ans.conditions.push(wh);
80
82
  }
81
83
  else
82
- ans[filter.table.name].push(res.condition);
84
+ ans.conditions.push(res.condition);
85
+ if (!ans.joins.includes(filter.table.name))
86
+ ans.joins.push(filter.table.name);
83
87
  };
84
88
  if (filter.operator == namirasoft_core_1.FilterItemOperator.all.equals) {
85
89
  if (filter.not)
86
- addCondition(idatabase.getNotIn(filter, values));
90
+ addCondition(idatabase.getNotIn(filter, column_name, values));
87
91
  else
88
- addCondition(idatabase.getIn(filter, values));
92
+ addCondition(idatabase.getIn(filter, column_name, values));
89
93
  }
90
94
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.contains) {
91
95
  values.forEach(value => {
92
96
  if (filter.not)
93
- addCondition(idatabase.getNotLike(filter, value));
97
+ addCondition(idatabase.getNotLike(filter, column_name, value));
94
98
  else
95
- addCondition(idatabase.getLike(filter, value));
99
+ addCondition(idatabase.getLike(filter, column_name, value));
96
100
  });
97
101
  }
98
102
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.regex) {
99
103
  values.forEach(value => {
100
104
  if (filter.not)
101
- addCondition(idatabase.getNotRegex(filter, value));
105
+ addCondition(idatabase.getNotRegex(filter, column_name, value));
102
106
  else
103
- addCondition(idatabase.getRegex(filter, value));
107
+ addCondition(idatabase.getRegex(filter, column_name, value));
104
108
  });
105
109
  }
106
110
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.empty) {
107
111
  if (filter.not)
108
- addCondition(idatabase.getNotEmpty(filter));
112
+ addCondition(idatabase.getNotEmpty(filter, column_name));
109
113
  else
110
- addCondition(idatabase.getEmpty(filter));
114
+ addCondition(idatabase.getEmpty(filter, column_name));
111
115
  }
112
116
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.exists) {
113
- let table = tables[filter.table.name];
114
117
  if (!table.join_conditions)
115
118
  throw namirasoft_core_1.ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
116
- addCondition(idatabase.getExists(filter, filter.not, table.join_conditions));
119
+ addCondition(idatabase.getExists(filter, column_name, filter.not, table.join_conditions));
117
120
  }
118
121
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.includes) {
119
- let table = tables[filter.table.name];
120
122
  if (!table.join_conditions)
121
123
  throw namirasoft_core_1.ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
122
- addCondition(idatabase.getIncludes(filter, filter.not, table.join_conditions, values));
124
+ addCondition(idatabase.getIncludes(filter, column_name, filter.not, table.join_conditions, values));
123
125
  }
124
126
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.startswith) {
125
127
  values.forEach(value => {
126
128
  if (filter.not)
127
- addCondition(idatabase.getNotStartsWith(filter, value));
129
+ addCondition(idatabase.getNotStartsWith(filter, column_name, value));
128
130
  else
129
- addCondition(idatabase.getStartsWith(filter, value));
131
+ addCondition(idatabase.getStartsWith(filter, column_name, value));
130
132
  });
131
133
  }
132
134
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.endswith) {
133
135
  values.forEach(value => {
134
136
  if (filter.not)
135
- addCondition(idatabase.getNotEndsWith(filter, value));
137
+ addCondition(idatabase.getNotEndsWith(filter, column_name, value));
136
138
  else
137
- addCondition(idatabase.getEndsWith(filter, value));
139
+ addCondition(idatabase.getEndsWith(filter, column_name, value));
138
140
  });
139
141
  }
140
142
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthan) {
141
143
  if (filter.not)
142
- addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
144
+ addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
143
145
  else
144
- addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
146
+ addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
145
147
  }
146
148
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthanequal) {
147
149
  if (filter.not)
148
- addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
150
+ addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
149
151
  else
150
- addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
152
+ addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
151
153
  }
152
154
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethan) {
153
155
  if (filter.not)
154
- addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
156
+ addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
155
157
  else
156
- addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
158
+ addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
157
159
  }
158
160
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethanequal) {
159
161
  if (filter.not)
160
- addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
162
+ addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
161
163
  else
162
- addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
164
+ addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
163
165
  }
164
166
  }
165
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseDatabase.js","sourceRoot":"","sources":["../src/BaseDatabase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseDatabase.js","sourceRoot":"","sources":["../src/BaseDatabase.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qDAA2F;AA2C3F,MAAsB,YAAY;IAAlC;QAEY,WAAM,GAA4B,EAAE,CAAC;IA2LjD,CAAC;IArLS,UAAU;;QAEhB,CAAC;KAAA;IACK,SAAS;;QAEf,CAAC;KAAA;IACD,QAAQ,CAAC,IAAY,EAAE,KAAU;QAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IACD,QAAQ,CAAI,IAAY;QAEpB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAM,CAAC;QACjC,IAAI,CAAC,GAAG;YACJ,gCAAc,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,IAAI,aAAa,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC;IACf,CAAC;IACD,QAAQ,CAAC,WAAmB,EAAE,SAAiB,EAAE,iBAA0B;QAGvE,IAAI,KAAK,CAAC,WAAW,CAAC;YAClB,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAI,KAAK,CAAC,SAAS,CAAC;YAChB,IAAI,iBAAiB;gBACjB,SAAS,GAAG,iBAAiB,CAAC;QACtC,IAAI,KAAK,CAAC,SAAS,CAAC;YAChB,SAAS,GAAG,EAAE,CAAC;QAEnB,IAAI,MAAM,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;QAC3C,IAAI,KAAK,GAAG,SAAS,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IACS,qBAAqB,CAAe,MAAqD,EAAE,SAA4C,EAAE,OAAkC;;QAEjL,IAAI,GAAG,GAAoD,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACzF,IAAI,OAAO,EACX,CAAC;YACG,IAAI,SAAS,GAAiC,EAAE,CAAC;YACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;gBACnC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,CAAC;oBACG,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAA+B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACvE,IAAI,WAAW,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,sDAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACxF,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBACxC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;wBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAC3C,CAAC;4BACG,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;4BACrB,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI;gCACjC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI;oCACnC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG;wCACnB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAC3C,CAAC;4CACG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;4CACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;wCAC7B,CAAC;wBACjB,CAAC;oBAEL,IAAI,UAAU,GAAG,GAAG,EAAE;wBAElB,IAAI,IAAI,GAAa,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpD,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;4BACrC,gCAAc,CAAC,SAAS,CAAC,GAAG,EAAE,+BAA+B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACtF,OAAO,IAAI,CAAC;oBAChB,CAAC,CAAC;oBACF,IAAI,YAAY,GAAG,CAAC,GAAkD,EAAE,EAAE;wBAEtE,IAAI,GAAG,CAAC,OAAO,EACf,CAAC;4BACG,IAAI,EAAE,GAAQ,EAAE,CAAC;4BACjB,EAAE,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC;4BAChC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5B,CAAC;;4BAEG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACvC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;4BACtC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC1C,CAAC,CAAC;oBACF,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,MAAM,EACpD,CAAC;wBACG,IAAI,MAAM,CAAC,GAAG;4BACV,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;;4BAE9D,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;oBACnE,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,QAAQ,EAC3D,CAAC;wBACG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BAEnB,IAAI,MAAM,CAAC,GAAG;gCACV,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;;gCAE/D,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;wBACpE,CAAC,CAAC,CAAC;oBACP,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,KAAK,EACxD,CAAC;wBACG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BAEnB,IAAI,MAAM,CAAC,GAAG;gCACV,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;;gCAEhE,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;wBACrE,CAAC,CAAC,CAAC;oBACP,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,KAAK,EACxD,CAAC;wBACG,IAAI,MAAM,CAAC,GAAG;4BACV,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;;4BAEzD,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;oBAC9D,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,MAAM,EACzD,CAAC;wBACG,IAAI,CAAC,KAAK,CAAC,eAAe;4BACtB,MAAM,gCAAc,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,iCAAiC,CAAC,CAAC;wBACnG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;oBAC9F,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,QAAQ,EAC3D,CAAC;wBACG,IAAI,CAAC,KAAK,CAAC,eAAe;4BACtB,MAAM,gCAAc,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,iCAAiC,CAAC,CAAC;wBACnG,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;oBACxG,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,UAAU,EAC7D,CAAC;wBACG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BAEnB,IAAI,MAAM,CAAC,GAAG;gCACV,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;;gCAErE,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;wBAC1E,CAAC,CAAC,CAAC;oBACP,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,QAAQ,EAC3D,CAAC;wBACG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BAEnB,IAAI,MAAM,CAAC,GAAG;gCACV,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;;gCAEnE,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;wBACxE,CAAC,CAAC,CAAC;oBACP,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,QAAQ,EAC3D,CAAC;wBACG,IAAI,MAAM,CAAC,GAAG;4BACV,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;;4BAE/E,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtF,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,aAAa,EAChE,CAAC;wBACG,IAAI,MAAM,CAAC,GAAG;4BACV,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;;4BAE9E,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;oBACvF,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,QAAQ,EAC3D,CAAC;wBACG,IAAI,MAAM,CAAC,GAAG;4BACV,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;;4BAE/E,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtF,CAAC;yBACI,IAAI,MAAM,CAAC,QAAQ,IAAI,oCAAkB,CAAC,GAAG,CAAC,aAAa,EAChE,CAAC;wBACG,IAAI,MAAM,CAAC,GAAG;4BACV,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;;4BAE9E,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;oBACvF,CAAC;gBACL,CAAC;QACT,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CAEJ;AA7LD,oCA6LC"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.41",
11
+ "version": "1.4.43",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  "@supercharge/request-ip": "^1.2.0",
21
21
  "@types/cors": "^2.8.17",
22
22
  "@types/express": "^5.0.0",
23
- "@types/node": "^22.10.5",
23
+ "@types/node": "^22.10.6",
24
24
  "@types/node-cron": "^3.0.11",
25
25
  "@types/nodemailer": "^6.4.17",
26
26
  "@types/nodemailer-smtp-transport": "^2.7.8",
@@ -5,6 +5,7 @@ import { BaseTable } from "./BaseTable";
5
5
  export interface BaseDatabase_FilterTable
6
6
  {
7
7
  join_conditions?: BaseDatabase_FilterTable_JoinConditions;
8
+ overrideColumnName?: (column: string) => string;
8
9
  }
9
10
  export interface BaseDatabase_FilterTable_JoinConditions
10
11
  {
@@ -17,29 +18,28 @@ export interface BaseDatabase_FilterTable_JoinConditions
17
18
  column: string;
18
19
  };
19
20
  getExtraConditions?: (column: string) => string[];
20
- overrideColumnName?: (column: string) => string;
21
21
  }
22
22
 
23
23
  export interface IFilterableDatabase<WhereOptions>
24
24
  {
25
- getIn: (filter: FilterItem, values: string[]) => { condition: WhereOptions, partial: boolean };
26
- getNotIn: (filter: FilterItem, values: string[]) => { condition: WhereOptions, partial: boolean };
27
- getLike: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
28
- getNotLike: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
29
- getRegex: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
30
- getNotRegex: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
31
- getEmpty: (filter: FilterItem) => { condition: WhereOptions, partial: boolean };
32
- getNotEmpty: (filter: FilterItem) => { condition: WhereOptions, partial: boolean };
33
- getExists: (filter: FilterItem, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions) => { condition: WhereOptions, partial: boolean };
34
- getIncludes: (filter: FilterItem, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions, value: string[]) => { condition: WhereOptions, partial: boolean };
35
- getStartsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
36
- getNotStartsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
37
- getEndsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
38
- getNotEndsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
39
- getLT: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
40
- getLTE: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
41
- getGT: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
42
- getGTE: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
25
+ getIn: (filter: FilterItem, column_name: string, values: string[]) => { condition: WhereOptions, partial: boolean };
26
+ getNotIn: (filter: FilterItem, column_name: string, values: string[]) => { condition: WhereOptions, partial: boolean };
27
+ getLike: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean };
28
+ getNotLike: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean };
29
+ getRegex: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean };
30
+ getNotRegex: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean };
31
+ getEmpty: (filter: FilterItem, column_name: string) => { condition: WhereOptions, partial: boolean };
32
+ getNotEmpty: (filter: FilterItem, column_name: string) => { condition: WhereOptions, partial: boolean };
33
+ getExists: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions) => { condition: WhereOptions, partial: boolean };
34
+ getIncludes: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions, value: string[]) => { condition: WhereOptions, partial: boolean };
35
+ getStartsWith: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean };
36
+ getNotStartsWith: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean };
37
+ getEndsWith: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean };
38
+ getNotEndsWith: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean };
39
+ getLT: (filter: FilterItem, column_name: string, value: any) => { condition: WhereOptions, partial: boolean };
40
+ getLTE: (filter: FilterItem, column_name: string, value: any) => { condition: WhereOptions, partial: boolean };
41
+ getGT: (filter: FilterItem, column_name: string, value: any) => { condition: WhereOptions, partial: boolean };
42
+ getGTE: (filter: FilterItem, column_name: string, value: any) => { condition: WhereOptions, partial: boolean };
43
43
  }
44
44
 
45
45
  export abstract class BaseDatabase
@@ -83,10 +83,9 @@ export abstract class BaseDatabase
83
83
  let limit = page_size;
84
84
  return { offset, limit };
85
85
  }
86
- protected _getFiltersConditions<WhereOptions>(tables: { [table: string]: BaseDatabase_FilterTable }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): { [table: string]: WhereOptions[] }
86
+ protected _getFiltersConditions<WhereOptions>(tables: { [table: string]: BaseDatabase_FilterTable }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): { conditions: WhereOptions[], joins: string[] }
87
87
  {
88
- let ans: { [table: string]: WhereOptions[] } = {};
89
- Object.keys(tables).forEach(table => ans[table] = []);
88
+ let ans: { conditions: WhereOptions[], joins: string[] } = { conditions: [], joins: [] };
90
89
  if (filters)
91
90
  {
92
91
  let processed: { [index: number]: boolean } = {};
@@ -94,8 +93,10 @@ export abstract class BaseDatabase
94
93
  if (!processed[i])
95
94
  {
96
95
  const filter = filters[i];
96
+ let table = tables[filter.table.name];
97
97
  let t = this.getTable<BaseTable<BaseDatabase, any>>(filter.table.name);
98
- t.checkColumn(filter.column.name, false, null);
98
+ let column_name = table?.overrideColumnName?.(filter.column.name) ?? filter.column.name;
99
+ t.checkColumn(column_name, false, null);
99
100
  let values = filter.values;
100
101
  if (filter.operator.count > 0)
101
102
  for (let j = i + 1; j < filters.length; j++)
@@ -123,27 +124,29 @@ export abstract class BaseDatabase
123
124
  if (res.partial)
124
125
  {
125
126
  let wh: any = {};
126
- wh[filter.column.name] = res.condition;
127
- ans[filter.table.name].push(wh);
127
+ wh[column_name] = res.condition;
128
+ ans.conditions.push(wh);
128
129
  }
129
130
  else
130
- ans[filter.table.name].push(res.condition);
131
+ ans.conditions.push(res.condition);
132
+ if (!ans.joins.includes(filter.table.name))
133
+ ans.joins.push(filter.table.name);
131
134
  };
132
135
  if (filter.operator == FilterItemOperator.all.equals)
133
136
  {
134
137
  if (filter.not)
135
- addCondition(idatabase.getNotIn(filter, values));
138
+ addCondition(idatabase.getNotIn(filter, column_name, values));
136
139
  else
137
- addCondition(idatabase.getIn(filter, values));
140
+ addCondition(idatabase.getIn(filter, column_name, values));
138
141
  }
139
142
  else if (filter.operator == FilterItemOperator.all.contains)
140
143
  {
141
144
  values.forEach(value =>
142
145
  {
143
146
  if (filter.not)
144
- addCondition(idatabase.getNotLike(filter, value));
147
+ addCondition(idatabase.getNotLike(filter, column_name, value));
145
148
  else
146
- addCondition(idatabase.getLike(filter, value));
149
+ addCondition(idatabase.getLike(filter, column_name, value));
147
150
  });
148
151
  }
149
152
  else if (filter.operator == FilterItemOperator.all.regex)
@@ -151,40 +154,38 @@ export abstract class BaseDatabase
151
154
  values.forEach(value =>
152
155
  {
153
156
  if (filter.not)
154
- addCondition(idatabase.getNotRegex(filter, value));
157
+ addCondition(idatabase.getNotRegex(filter, column_name, value));
155
158
  else
156
- addCondition(idatabase.getRegex(filter, value));
159
+ addCondition(idatabase.getRegex(filter, column_name, value));
157
160
  });
158
161
  }
159
162
  else if (filter.operator == FilterItemOperator.all.empty)
160
163
  {
161
164
  if (filter.not)
162
- addCondition(idatabase.getNotEmpty(filter));
165
+ addCondition(idatabase.getNotEmpty(filter, column_name));
163
166
  else
164
- addCondition(idatabase.getEmpty(filter));
167
+ addCondition(idatabase.getEmpty(filter, column_name));
165
168
  }
166
169
  else if (filter.operator == FilterItemOperator.all.exists)
167
170
  {
168
- let table = tables[filter.table.name];
169
171
  if (!table.join_conditions)
170
172
  throw ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
171
- addCondition(idatabase.getExists(filter, filter.not, table.join_conditions));
173
+ addCondition(idatabase.getExists(filter, column_name, filter.not, table.join_conditions));
172
174
  }
173
175
  else if (filter.operator == FilterItemOperator.all.includes)
174
176
  {
175
- let table = tables[filter.table.name];
176
177
  if (!table.join_conditions)
177
178
  throw ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
178
- addCondition(idatabase.getIncludes(filter, filter.not, table.join_conditions, values));
179
+ addCondition(idatabase.getIncludes(filter, column_name, filter.not, table.join_conditions, values));
179
180
  }
180
181
  else if (filter.operator == FilterItemOperator.all.startswith)
181
182
  {
182
183
  values.forEach(value =>
183
184
  {
184
185
  if (filter.not)
185
- addCondition(idatabase.getNotStartsWith(filter, value));
186
+ addCondition(idatabase.getNotStartsWith(filter, column_name, value));
186
187
  else
187
- addCondition(idatabase.getStartsWith(filter, value));
188
+ addCondition(idatabase.getStartsWith(filter, column_name, value));
188
189
  });
189
190
  }
190
191
  else if (filter.operator == FilterItemOperator.all.endswith)
@@ -192,38 +193,38 @@ export abstract class BaseDatabase
192
193
  values.forEach(value =>
193
194
  {
194
195
  if (filter.not)
195
- addCondition(idatabase.getNotEndsWith(filter, value));
196
+ addCondition(idatabase.getNotEndsWith(filter, column_name, value));
196
197
  else
197
- addCondition(idatabase.getEndsWith(filter, value));
198
+ addCondition(idatabase.getEndsWith(filter, column_name, value));
198
199
  });
199
200
  }
200
201
  else if (filter.operator == FilterItemOperator.all.lessthan)
201
202
  {
202
203
  if (filter.not)
203
- addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
204
+ addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
204
205
  else
205
- addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
206
+ addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
206
207
  }
207
208
  else if (filter.operator == FilterItemOperator.all.lessthanequal)
208
209
  {
209
210
  if (filter.not)
210
- addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
211
+ addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
211
212
  else
212
- addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
213
+ addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
213
214
  }
214
215
  else if (filter.operator == FilterItemOperator.all.morethan)
215
216
  {
216
217
  if (filter.not)
217
- addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
218
+ addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
218
219
  else
219
- addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
220
+ addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
220
221
  }
221
222
  else if (filter.operator == FilterItemOperator.all.morethanequal)
222
223
  {
223
224
  if (filter.not)
224
- addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
225
+ addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
225
226
  else
226
- addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
227
+ addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
227
228
  }
228
229
  }
229
230
  }