namirasoft-node 1.4.40 → 1.4.42

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.
@@ -1,87 +1,90 @@
1
1
  import * as express from "express";
2
2
  import { FilterItem, SortItem } from "namirasoft-core";
3
3
  export interface BaseDatabase_FilterTable {
4
- join_conditions?: {
5
- main: {
6
- table: string;
7
- column: string;
8
- };
9
- secondary: {
10
- table: string;
11
- column: string;
12
- };
4
+ join_conditions?: BaseDatabase_FilterTable_JoinConditions;
5
+ overrideColumnName?: (column: string) => string;
6
+ }
7
+ export interface BaseDatabase_FilterTable_JoinConditions {
8
+ main: {
9
+ table: string;
10
+ column: string;
11
+ };
12
+ secondary: {
13
+ table: string;
14
+ column: string;
13
15
  };
16
+ getExtraConditions?: (column: string) => string[];
14
17
  }
15
18
  export interface IFilterableDatabase<WhereOptions> {
16
- getIn: (filter: FilterItem, values: string[]) => {
19
+ getIn: (filter: FilterItem, column_name: string, values: string[]) => {
17
20
  condition: WhereOptions;
18
21
  partial: boolean;
19
22
  };
20
- getNotIn: (filter: FilterItem, values: string[]) => {
23
+ getNotIn: (filter: FilterItem, column_name: string, values: string[]) => {
21
24
  condition: WhereOptions;
22
25
  partial: boolean;
23
26
  };
24
- getLike: (filter: FilterItem, value: string) => {
27
+ getLike: (filter: FilterItem, column_name: string, value: string) => {
25
28
  condition: WhereOptions;
26
29
  partial: boolean;
27
30
  };
28
- getNotLike: (filter: FilterItem, value: string) => {
31
+ getNotLike: (filter: FilterItem, column_name: string, value: string) => {
29
32
  condition: WhereOptions;
30
33
  partial: boolean;
31
34
  };
32
- getRegex: (filter: FilterItem, value: string) => {
35
+ getRegex: (filter: FilterItem, column_name: string, value: string) => {
33
36
  condition: WhereOptions;
34
37
  partial: boolean;
35
38
  };
36
- getNotRegex: (filter: FilterItem, value: string) => {
39
+ getNotRegex: (filter: FilterItem, column_name: string, value: string) => {
37
40
  condition: WhereOptions;
38
41
  partial: boolean;
39
42
  };
40
- getEmpty: (filter: FilterItem) => {
43
+ getEmpty: (filter: FilterItem, column_name: string) => {
41
44
  condition: WhereOptions;
42
45
  partial: boolean;
43
46
  };
44
- getNotEmpty: (filter: FilterItem) => {
47
+ getNotEmpty: (filter: FilterItem, column_name: string) => {
45
48
  condition: WhereOptions;
46
49
  partial: boolean;
47
50
  };
48
- getExists: (filter: FilterItem, not: boolean) => {
51
+ getExists: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions) => {
49
52
  condition: WhereOptions;
50
53
  partial: boolean;
51
54
  };
52
- getIncludes: (filter: FilterItem, not: boolean, value: string[]) => {
55
+ getIncludes: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions, value: string[]) => {
53
56
  condition: WhereOptions;
54
57
  partial: boolean;
55
58
  };
56
- getStartsWith: (filter: FilterItem, value: string) => {
59
+ getStartsWith: (filter: FilterItem, column_name: string, value: string) => {
57
60
  condition: WhereOptions;
58
61
  partial: boolean;
59
62
  };
60
- getNotStartsWith: (filter: FilterItem, value: string) => {
63
+ getNotStartsWith: (filter: FilterItem, column_name: string, value: string) => {
61
64
  condition: WhereOptions;
62
65
  partial: boolean;
63
66
  };
64
- getEndsWith: (filter: FilterItem, value: string) => {
67
+ getEndsWith: (filter: FilterItem, column_name: string, value: string) => {
65
68
  condition: WhereOptions;
66
69
  partial: boolean;
67
70
  };
68
- getNotEndsWith: (filter: FilterItem, value: string) => {
71
+ getNotEndsWith: (filter: FilterItem, column_name: string, value: string) => {
69
72
  condition: WhereOptions;
70
73
  partial: boolean;
71
74
  };
72
- getLT: (filter: FilterItem, value: any) => {
75
+ getLT: (filter: FilterItem, column_name: string, value: any) => {
73
76
  condition: WhereOptions;
74
77
  partial: boolean;
75
78
  };
76
- getLTE: (filter: FilterItem, value: any) => {
79
+ getLTE: (filter: FilterItem, column_name: string, value: any) => {
77
80
  condition: WhereOptions;
78
81
  partial: boolean;
79
82
  };
80
- getGT: (filter: FilterItem, value: any) => {
83
+ getGT: (filter: FilterItem, column_name: string, value: any) => {
81
84
  condition: WhereOptions;
82
85
  partial: boolean;
83
86
  };
84
- getGTE: (filter: FilterItem, value: any) => {
87
+ getGTE: (filter: FilterItem, column_name: string, value: any) => {
85
88
  condition: WhereOptions;
86
89
  partial: boolean;
87
90
  };
@@ -45,6 +45,7 @@ class BaseDatabase {
45
45
  return { offset, limit };
46
46
  }
47
47
  _getFiltersConditions(tables, idatabase, filters) {
48
+ var _a, _b;
48
49
  let ans = {};
49
50
  Object.keys(tables).forEach(table => ans[table] = []);
50
51
  if (filters) {
@@ -52,8 +53,10 @@ class BaseDatabase {
52
53
  for (let i = 0; i < filters.length; i++)
53
54
  if (!processed[i]) {
54
55
  const filter = filters[i];
56
+ let table = tables[filter.table.name];
55
57
  let t = this.getTable(filter.table.name);
56
- t.checkColumn(filter.column.name, false, null);
58
+ 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;
59
+ t.checkColumn(column_name, false, null);
57
60
  let values = filter.values;
58
61
  if (filter.operator.count > 0)
59
62
  for (let j = i + 1; j < filters.length; j++) {
@@ -75,7 +78,7 @@ class BaseDatabase {
75
78
  let addCondition = (res) => {
76
79
  if (res.partial) {
77
80
  let wh = {};
78
- wh[filter.column.name] = res.condition;
81
+ wh[column_name] = res.condition;
79
82
  ans[filter.table.name].push(wh);
80
83
  }
81
84
  else
@@ -83,77 +86,81 @@ class BaseDatabase {
83
86
  };
84
87
  if (filter.operator == namirasoft_core_1.FilterItemOperator.all.equals) {
85
88
  if (filter.not)
86
- addCondition(idatabase.getNotIn(filter, values));
89
+ addCondition(idatabase.getNotIn(filter, column_name, values));
87
90
  else
88
- addCondition(idatabase.getIn(filter, values));
91
+ addCondition(idatabase.getIn(filter, column_name, values));
89
92
  }
90
93
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.contains) {
91
94
  values.forEach(value => {
92
95
  if (filter.not)
93
- addCondition(idatabase.getNotLike(filter, value));
96
+ addCondition(idatabase.getNotLike(filter, column_name, value));
94
97
  else
95
- addCondition(idatabase.getLike(filter, value));
98
+ addCondition(idatabase.getLike(filter, column_name, value));
96
99
  });
97
100
  }
98
101
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.regex) {
99
102
  values.forEach(value => {
100
103
  if (filter.not)
101
- addCondition(idatabase.getNotRegex(filter, value));
104
+ addCondition(idatabase.getNotRegex(filter, column_name, value));
102
105
  else
103
- addCondition(idatabase.getRegex(filter, value));
106
+ addCondition(idatabase.getRegex(filter, column_name, value));
104
107
  });
105
108
  }
106
109
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.empty) {
107
110
  if (filter.not)
108
- addCondition(idatabase.getNotEmpty(filter));
111
+ addCondition(idatabase.getNotEmpty(filter, column_name));
109
112
  else
110
- addCondition(idatabase.getEmpty(filter));
113
+ addCondition(idatabase.getEmpty(filter, column_name));
111
114
  }
112
115
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.exists) {
113
- addCondition(idatabase.getExists(filter, filter.not));
116
+ if (!table.join_conditions)
117
+ throw namirasoft_core_1.ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
118
+ addCondition(idatabase.getExists(filter, column_name, filter.not, table.join_conditions));
114
119
  }
115
120
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.includes) {
116
- addCondition(idatabase.getIncludes(filter, filter.not, values));
121
+ if (!table.join_conditions)
122
+ throw namirasoft_core_1.ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
123
+ addCondition(idatabase.getIncludes(filter, column_name, filter.not, table.join_conditions, values));
117
124
  }
118
125
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.startswith) {
119
126
  values.forEach(value => {
120
127
  if (filter.not)
121
- addCondition(idatabase.getNotStartsWith(filter, value));
128
+ addCondition(idatabase.getNotStartsWith(filter, column_name, value));
122
129
  else
123
- addCondition(idatabase.getStartsWith(filter, value));
130
+ addCondition(idatabase.getStartsWith(filter, column_name, value));
124
131
  });
125
132
  }
126
133
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.endswith) {
127
134
  values.forEach(value => {
128
135
  if (filter.not)
129
- addCondition(idatabase.getNotEndsWith(filter, value));
136
+ addCondition(idatabase.getNotEndsWith(filter, column_name, value));
130
137
  else
131
- addCondition(idatabase.getEndsWith(filter, value));
138
+ addCondition(idatabase.getEndsWith(filter, column_name, value));
132
139
  });
133
140
  }
134
141
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthan) {
135
142
  if (filter.not)
136
- addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
143
+ addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
137
144
  else
138
- addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
145
+ addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
139
146
  }
140
147
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthanequal) {
141
148
  if (filter.not)
142
- addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
149
+ addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
143
150
  else
144
- addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
151
+ addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
145
152
  }
146
153
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethan) {
147
154
  if (filter.not)
148
- addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
155
+ addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
149
156
  else
150
- addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
157
+ addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
151
158
  }
152
159
  else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethanequal) {
153
160
  if (filter.not)
154
- addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
161
+ addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
155
162
  else
156
- addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
163
+ addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
157
164
  }
158
165
  }
159
166
  }
@@ -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":"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"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.40",
11
+ "version": "1.4.42",
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",
@@ -30,7 +30,7 @@
30
30
  "cors": "^2.8.5",
31
31
  "express": "^4.21.2",
32
32
  "joi": "^17.13.3",
33
- "namirasoft-core": "^1.4.41",
33
+ "namirasoft-core": "^1.4.42",
34
34
  "namirasoft-log": "^1.4.15",
35
35
  "namirasoft-schema": "^1.4.22",
36
36
  "node-cron": "^3.0.3",
@@ -4,32 +4,42 @@ import { BaseTable } from "./BaseTable";
4
4
 
5
5
  export interface BaseDatabase_FilterTable
6
6
  {
7
- join_conditions?: {
8
- main: { table: string, column: string },
9
- secondary: { table: string, column: string },
7
+ join_conditions?: BaseDatabase_FilterTable_JoinConditions;
8
+ overrideColumnName?: (column: string) => string;
9
+ }
10
+ export interface BaseDatabase_FilterTable_JoinConditions
11
+ {
12
+ main: {
13
+ table: string;
14
+ column: string;
15
+ };
16
+ secondary: {
17
+ table: string;
18
+ column: string;
10
19
  };
20
+ getExtraConditions?: (column: string) => string[];
11
21
  }
12
22
 
13
23
  export interface IFilterableDatabase<WhereOptions>
14
24
  {
15
- getIn: (filter: FilterItem, values: string[]) => { condition: WhereOptions, partial: boolean };
16
- getNotIn: (filter: FilterItem, values: string[]) => { condition: WhereOptions, partial: boolean };
17
- getLike: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
18
- getNotLike: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
19
- getRegex: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
20
- getNotRegex: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
21
- getEmpty: (filter: FilterItem) => { condition: WhereOptions, partial: boolean };
22
- getNotEmpty: (filter: FilterItem) => { condition: WhereOptions, partial: boolean };
23
- getExists: (filter: FilterItem, not: boolean) => { condition: WhereOptions, partial: boolean };
24
- getIncludes: (filter: FilterItem, not: boolean, value: string[]) => { condition: WhereOptions, partial: boolean };
25
- getStartsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
26
- getNotStartsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
27
- getEndsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
28
- getNotEndsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
29
- getLT: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
30
- getLTE: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
31
- getGT: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
32
- 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 };
33
43
  }
34
44
 
35
45
  export abstract class BaseDatabase
@@ -84,8 +94,10 @@ export abstract class BaseDatabase
84
94
  if (!processed[i])
85
95
  {
86
96
  const filter = filters[i];
97
+ let table = tables[filter.table.name];
87
98
  let t = this.getTable<BaseTable<BaseDatabase, any>>(filter.table.name);
88
- t.checkColumn(filter.column.name, false, null);
99
+ let column_name = table?.overrideColumnName?.(filter.column.name) ?? filter.column.name;
100
+ t.checkColumn(column_name, false, null);
89
101
  let values = filter.values;
90
102
  if (filter.operator.count > 0)
91
103
  for (let j = i + 1; j < filters.length; j++)
@@ -113,7 +125,7 @@ export abstract class BaseDatabase
113
125
  if (res.partial)
114
126
  {
115
127
  let wh: any = {};
116
- wh[filter.column.name] = res.condition;
128
+ wh[column_name] = res.condition;
117
129
  ans[filter.table.name].push(wh);
118
130
  }
119
131
  else
@@ -122,18 +134,18 @@ export abstract class BaseDatabase
122
134
  if (filter.operator == FilterItemOperator.all.equals)
123
135
  {
124
136
  if (filter.not)
125
- addCondition(idatabase.getNotIn(filter, values));
137
+ addCondition(idatabase.getNotIn(filter, column_name, values));
126
138
  else
127
- addCondition(idatabase.getIn(filter, values));
139
+ addCondition(idatabase.getIn(filter, column_name, values));
128
140
  }
129
141
  else if (filter.operator == FilterItemOperator.all.contains)
130
142
  {
131
143
  values.forEach(value =>
132
144
  {
133
145
  if (filter.not)
134
- addCondition(idatabase.getNotLike(filter, value));
146
+ addCondition(idatabase.getNotLike(filter, column_name, value));
135
147
  else
136
- addCondition(idatabase.getLike(filter, value));
148
+ addCondition(idatabase.getLike(filter, column_name, value));
137
149
  });
138
150
  }
139
151
  else if (filter.operator == FilterItemOperator.all.regex)
@@ -141,34 +153,38 @@ export abstract class BaseDatabase
141
153
  values.forEach(value =>
142
154
  {
143
155
  if (filter.not)
144
- addCondition(idatabase.getNotRegex(filter, value));
156
+ addCondition(idatabase.getNotRegex(filter, column_name, value));
145
157
  else
146
- addCondition(idatabase.getRegex(filter, value));
158
+ addCondition(idatabase.getRegex(filter, column_name, value));
147
159
  });
148
160
  }
149
161
  else if (filter.operator == FilterItemOperator.all.empty)
150
162
  {
151
163
  if (filter.not)
152
- addCondition(idatabase.getNotEmpty(filter));
164
+ addCondition(idatabase.getNotEmpty(filter, column_name));
153
165
  else
154
- addCondition(idatabase.getEmpty(filter));
166
+ addCondition(idatabase.getEmpty(filter, column_name));
155
167
  }
156
168
  else if (filter.operator == FilterItemOperator.all.exists)
157
169
  {
158
- addCondition(idatabase.getExists(filter, filter.not));
170
+ if (!table.join_conditions)
171
+ throw ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
172
+ addCondition(idatabase.getExists(filter, column_name, filter.not, table.join_conditions));
159
173
  }
160
174
  else if (filter.operator == FilterItemOperator.all.includes)
161
175
  {
162
- addCondition(idatabase.getIncludes(filter, filter.not, values));
176
+ if (!table.join_conditions)
177
+ throw ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
178
+ addCondition(idatabase.getIncludes(filter, column_name, filter.not, table.join_conditions, values));
163
179
  }
164
180
  else if (filter.operator == FilterItemOperator.all.startswith)
165
181
  {
166
182
  values.forEach(value =>
167
183
  {
168
184
  if (filter.not)
169
- addCondition(idatabase.getNotStartsWith(filter, value));
185
+ addCondition(idatabase.getNotStartsWith(filter, column_name, value));
170
186
  else
171
- addCondition(idatabase.getStartsWith(filter, value));
187
+ addCondition(idatabase.getStartsWith(filter, column_name, value));
172
188
  });
173
189
  }
174
190
  else if (filter.operator == FilterItemOperator.all.endswith)
@@ -176,38 +192,38 @@ export abstract class BaseDatabase
176
192
  values.forEach(value =>
177
193
  {
178
194
  if (filter.not)
179
- addCondition(idatabase.getNotEndsWith(filter, value));
195
+ addCondition(idatabase.getNotEndsWith(filter, column_name, value));
180
196
  else
181
- addCondition(idatabase.getEndsWith(filter, value));
197
+ addCondition(idatabase.getEndsWith(filter, column_name, value));
182
198
  });
183
199
  }
184
200
  else if (filter.operator == FilterItemOperator.all.lessthan)
185
201
  {
186
202
  if (filter.not)
187
- addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
203
+ addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
188
204
  else
189
- addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
205
+ addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
190
206
  }
191
207
  else if (filter.operator == FilterItemOperator.all.lessthanequal)
192
208
  {
193
209
  if (filter.not)
194
- addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
210
+ addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
195
211
  else
196
- addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
212
+ addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
197
213
  }
198
214
  else if (filter.operator == FilterItemOperator.all.morethan)
199
215
  {
200
216
  if (filter.not)
201
- addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
217
+ addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
202
218
  else
203
- addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
219
+ addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
204
220
  }
205
221
  else if (filter.operator == FilterItemOperator.all.morethanequal)
206
222
  {
207
223
  if (filter.not)
208
- addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
224
+ addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
209
225
  else
210
- addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
226
+ addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
211
227
  }
212
228
  }
213
229
  }