namirasoft-node 1.3.62 → 1.3.64
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/dist/BaseDatabase.d.ts +38 -23
- package/dist/BaseDatabase.js +32 -49
- package/dist/BaseDatabase.js.map +1 -1
- package/package.json +1 -1
- package/src/BaseDatabase.ts +52 -70
package/dist/BaseDatabase.d.ts
CHANGED
|
@@ -1,55 +1,72 @@
|
|
|
1
1
|
import { FilterItem } from "namirasoft-core";
|
|
2
|
-
export interface IFilterableDatabase {
|
|
2
|
+
export interface IFilterableDatabase<WhereOptions> {
|
|
3
3
|
getIn: (filter: FilterItem, values: string[]) => {
|
|
4
|
-
|
|
4
|
+
condition: WhereOptions;
|
|
5
|
+
partial: boolean;
|
|
5
6
|
};
|
|
6
7
|
getNotIn: (filter: FilterItem, values: string[]) => {
|
|
7
|
-
|
|
8
|
+
condition: WhereOptions;
|
|
9
|
+
partial: boolean;
|
|
8
10
|
};
|
|
9
11
|
getLike: (filter: FilterItem, value: string) => {
|
|
10
|
-
|
|
12
|
+
condition: WhereOptions;
|
|
13
|
+
partial: boolean;
|
|
11
14
|
};
|
|
12
15
|
getNotLike: (filter: FilterItem, value: string) => {
|
|
13
|
-
|
|
16
|
+
condition: WhereOptions;
|
|
17
|
+
partial: boolean;
|
|
14
18
|
};
|
|
15
19
|
getRegex: (filter: FilterItem, value: string) => {
|
|
16
|
-
|
|
20
|
+
condition: WhereOptions;
|
|
21
|
+
partial: boolean;
|
|
17
22
|
};
|
|
18
23
|
getNotRegex: (filter: FilterItem, value: string) => {
|
|
19
|
-
|
|
24
|
+
condition: WhereOptions;
|
|
25
|
+
partial: boolean;
|
|
20
26
|
};
|
|
21
27
|
getEmpty: (filter: FilterItem) => {
|
|
22
|
-
|
|
28
|
+
condition: WhereOptions;
|
|
29
|
+
partial: boolean;
|
|
23
30
|
};
|
|
24
31
|
getNotEmpty: (filter: FilterItem) => {
|
|
25
|
-
|
|
32
|
+
condition: WhereOptions;
|
|
33
|
+
partial: boolean;
|
|
26
34
|
};
|
|
27
35
|
getExists: (filter: FilterItem, not: boolean) => {
|
|
28
|
-
|
|
36
|
+
condition: WhereOptions;
|
|
37
|
+
partial: boolean;
|
|
29
38
|
};
|
|
30
39
|
getStartsWith: (filter: FilterItem, value: string) => {
|
|
31
|
-
|
|
40
|
+
condition: WhereOptions;
|
|
41
|
+
partial: boolean;
|
|
32
42
|
};
|
|
33
43
|
getNotStartsWith: (filter: FilterItem, value: string) => {
|
|
34
|
-
|
|
44
|
+
condition: WhereOptions;
|
|
45
|
+
partial: boolean;
|
|
35
46
|
};
|
|
36
47
|
getEndsWith: (filter: FilterItem, value: string) => {
|
|
37
|
-
|
|
48
|
+
condition: WhereOptions;
|
|
49
|
+
partial: boolean;
|
|
38
50
|
};
|
|
39
51
|
getNotEndsWith: (filter: FilterItem, value: string) => {
|
|
40
|
-
|
|
52
|
+
condition: WhereOptions;
|
|
53
|
+
partial: boolean;
|
|
41
54
|
};
|
|
42
55
|
getLT: (filter: FilterItem, value: any) => {
|
|
43
|
-
|
|
56
|
+
condition: WhereOptions;
|
|
57
|
+
partial: boolean;
|
|
44
58
|
};
|
|
45
59
|
getLTE: (filter: FilterItem, value: any) => {
|
|
46
|
-
|
|
60
|
+
condition: WhereOptions;
|
|
61
|
+
partial: boolean;
|
|
47
62
|
};
|
|
48
63
|
getGT: (filter: FilterItem, value: any) => {
|
|
49
|
-
|
|
64
|
+
condition: WhereOptions;
|
|
65
|
+
partial: boolean;
|
|
50
66
|
};
|
|
51
67
|
getGTE: (filter: FilterItem, value: any) => {
|
|
52
|
-
|
|
68
|
+
condition: WhereOptions;
|
|
69
|
+
partial: boolean;
|
|
53
70
|
};
|
|
54
71
|
}
|
|
55
72
|
export declare abstract class BaseDatabase {
|
|
@@ -63,11 +80,9 @@ export declare abstract class BaseDatabase {
|
|
|
63
80
|
offset: number;
|
|
64
81
|
limit: number;
|
|
65
82
|
};
|
|
66
|
-
protected _getFiltersConditions(tables: {
|
|
83
|
+
protected _getFiltersConditions<WhereOptions>(tables: {
|
|
67
84
|
[table: string]: string[];
|
|
68
|
-
}, idatabase: IFilterableDatabase
|
|
69
|
-
[table: string]:
|
|
70
|
-
[name: string]: any;
|
|
71
|
-
}[];
|
|
85
|
+
}, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): {
|
|
86
|
+
[table: string]: WhereOptions[];
|
|
72
87
|
};
|
|
73
88
|
}
|
package/dist/BaseDatabase.js
CHANGED
|
@@ -55,102 +55,85 @@ class BaseDatabase {
|
|
|
55
55
|
namirasoft_core_1.ErrorOperation.throwHTTP(400, `Invalid number values for: '${values.join(",")}'`);
|
|
56
56
|
return nums;
|
|
57
57
|
};
|
|
58
|
+
let addCondition = (res) => {
|
|
59
|
+
if (res.partial) {
|
|
60
|
+
let wh = {};
|
|
61
|
+
wh[filter.column.name] = res.condition;
|
|
62
|
+
ans[filter.table.name].push(wh);
|
|
63
|
+
}
|
|
64
|
+
else
|
|
65
|
+
ans[filter.table.name].push(res.condition);
|
|
66
|
+
};
|
|
58
67
|
if (filter.operator == namirasoft_core_1.FilterItemOperator.all.equals) {
|
|
59
|
-
let wh = {};
|
|
60
68
|
if (filter.not)
|
|
61
|
-
|
|
69
|
+
addCondition(idatabase.getNotIn(filter, values));
|
|
62
70
|
else
|
|
63
|
-
|
|
64
|
-
ans[filter.table.name].push(wh);
|
|
71
|
+
addCondition(idatabase.getIn(filter, values));
|
|
65
72
|
}
|
|
66
73
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.contains) {
|
|
67
74
|
values.forEach(value => {
|
|
68
|
-
let wh = {};
|
|
69
75
|
if (filter.not)
|
|
70
|
-
|
|
76
|
+
addCondition(idatabase.getNotLike(filter, value));
|
|
71
77
|
else
|
|
72
|
-
|
|
73
|
-
ans[filter.table.name].push(wh);
|
|
78
|
+
addCondition(idatabase.getLike(filter, value));
|
|
74
79
|
});
|
|
75
80
|
}
|
|
76
81
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.regex) {
|
|
77
82
|
values.forEach(value => {
|
|
78
|
-
let wh = {};
|
|
79
83
|
if (filter.not)
|
|
80
|
-
|
|
84
|
+
addCondition(idatabase.getNotRegex(filter, value));
|
|
81
85
|
else
|
|
82
|
-
|
|
83
|
-
ans[filter.table.name].push(wh);
|
|
86
|
+
addCondition(idatabase.getRegex(filter, value));
|
|
84
87
|
});
|
|
85
88
|
}
|
|
86
89
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.empty) {
|
|
87
|
-
if (filter.not)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
let wh = {};
|
|
94
|
-
wh[filter.column.name] = idatabase.getNotEmpty(filter);
|
|
95
|
-
ans[filter.table.name].push(wh);
|
|
96
|
-
}
|
|
90
|
+
if (filter.not)
|
|
91
|
+
addCondition(idatabase.getNotEmpty(filter));
|
|
92
|
+
else
|
|
93
|
+
addCondition(idatabase.getEmpty(filter));
|
|
97
94
|
}
|
|
98
95
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.exists) {
|
|
99
|
-
|
|
100
|
-
wh[filter.column.name] = idatabase.getExists(filter, filter.not);
|
|
101
|
-
ans[filter.table.name].push(wh);
|
|
96
|
+
addCondition(idatabase.getExists(filter, filter.not));
|
|
102
97
|
}
|
|
103
98
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.startswith) {
|
|
104
99
|
values.forEach(value => {
|
|
105
|
-
let wh = {};
|
|
106
100
|
if (filter.not)
|
|
107
|
-
|
|
101
|
+
addCondition(idatabase.getNotStartsWith(filter, value));
|
|
108
102
|
else
|
|
109
|
-
|
|
110
|
-
ans[filter.table.name].push(wh);
|
|
103
|
+
addCondition(idatabase.getStartsWith(filter, value));
|
|
111
104
|
});
|
|
112
105
|
}
|
|
113
106
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.endswith) {
|
|
114
107
|
values.forEach(value => {
|
|
115
|
-
let wh = {};
|
|
116
108
|
if (filter.not)
|
|
117
|
-
|
|
109
|
+
addCondition(idatabase.getNotEndsWith(filter, value));
|
|
118
110
|
else
|
|
119
|
-
|
|
120
|
-
ans[filter.table.name].push(wh);
|
|
111
|
+
addCondition(idatabase.getEndsWith(filter, value));
|
|
121
112
|
});
|
|
122
113
|
}
|
|
123
114
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthan) {
|
|
124
|
-
let wh = {};
|
|
125
115
|
if (filter.not)
|
|
126
|
-
|
|
116
|
+
addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
|
|
127
117
|
else
|
|
128
|
-
|
|
129
|
-
ans[filter.table.name].push(wh);
|
|
118
|
+
addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
|
|
130
119
|
}
|
|
131
120
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthanequal) {
|
|
132
|
-
let wh = {};
|
|
133
121
|
if (filter.not)
|
|
134
|
-
|
|
122
|
+
addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
|
|
135
123
|
else
|
|
136
|
-
|
|
137
|
-
ans[filter.table.name].push(wh);
|
|
124
|
+
addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
|
|
138
125
|
}
|
|
139
126
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethan) {
|
|
140
|
-
let wh = {};
|
|
141
127
|
if (filter.not)
|
|
142
|
-
|
|
128
|
+
addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
|
|
143
129
|
else
|
|
144
|
-
|
|
145
|
-
ans[filter.table.name].push(wh);
|
|
130
|
+
addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
|
|
146
131
|
}
|
|
147
132
|
else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethanequal) {
|
|
148
|
-
let wh = {};
|
|
149
133
|
if (filter.not)
|
|
150
|
-
|
|
134
|
+
addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
|
|
151
135
|
else
|
|
152
|
-
|
|
153
|
-
ans[filter.table.name].push(wh);
|
|
136
|
+
addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
|
|
154
137
|
}
|
|
155
138
|
}
|
|
156
139
|
}
|
package/dist/BaseDatabase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDatabase.js","sourceRoot":"","sources":["../src/BaseDatabase.ts"],"names":[],"mappings":";;;AAAA,qDAAiF;AAuBjF,MAAsB,YAAY;IAAlC;QAEY,WAAM,GAA4B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseDatabase.js","sourceRoot":"","sources":["../src/BaseDatabase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/BaseDatabase.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { ErrorOperation, FilterItem, FilterItemOperator } from "namirasoft-core";
|
|
2
2
|
|
|
3
|
-
export interface IFilterableDatabase
|
|
3
|
+
export interface IFilterableDatabase<WhereOptions>
|
|
4
4
|
{
|
|
5
|
-
getIn: (filter: FilterItem, values: string[]) => {
|
|
6
|
-
getNotIn: (filter: FilterItem, values: string[]) => {
|
|
7
|
-
getLike: (filter: FilterItem, value: string) => {
|
|
8
|
-
getNotLike: (filter: FilterItem, value: string) => {
|
|
9
|
-
getRegex: (filter: FilterItem, value: string) => {
|
|
10
|
-
getNotRegex: (filter: FilterItem, value: string) => {
|
|
11
|
-
getEmpty: (filter: FilterItem) => {
|
|
12
|
-
getNotEmpty: (filter: FilterItem) => {
|
|
13
|
-
getExists: (filter: FilterItem, not: boolean) => {
|
|
14
|
-
getStartsWith: (filter: FilterItem, value: string) => {
|
|
15
|
-
getNotStartsWith: (filter: FilterItem, value: string) => {
|
|
16
|
-
getEndsWith: (filter: FilterItem, value: string) => {
|
|
17
|
-
getNotEndsWith: (filter: FilterItem, value: string) => {
|
|
18
|
-
getLT: (filter: FilterItem, value: any) => {
|
|
19
|
-
getLTE: (filter: FilterItem, value: any) => {
|
|
20
|
-
getGT: (filter: FilterItem, value: any) => {
|
|
21
|
-
getGTE: (filter: FilterItem, value: any) => {
|
|
5
|
+
getIn: (filter: FilterItem, values: string[]) => { condition: WhereOptions, partial: boolean };
|
|
6
|
+
getNotIn: (filter: FilterItem, values: string[]) => { condition: WhereOptions, partial: boolean };
|
|
7
|
+
getLike: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
|
|
8
|
+
getNotLike: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
|
|
9
|
+
getRegex: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
|
|
10
|
+
getNotRegex: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
|
|
11
|
+
getEmpty: (filter: FilterItem) => { condition: WhereOptions, partial: boolean };
|
|
12
|
+
getNotEmpty: (filter: FilterItem) => { condition: WhereOptions, partial: boolean };
|
|
13
|
+
getExists: (filter: FilterItem, not: boolean) => { condition: WhereOptions, partial: boolean };
|
|
14
|
+
getStartsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
|
|
15
|
+
getNotStartsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
|
|
16
|
+
getEndsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
|
|
17
|
+
getNotEndsWith: (filter: FilterItem, value: string) => { condition: WhereOptions, partial: boolean };
|
|
18
|
+
getLT: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
|
|
19
|
+
getLTE: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
|
|
20
|
+
getGT: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
|
|
21
|
+
getGTE: (filter: FilterItem, value: any) => { condition: WhereOptions, partial: boolean };
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export abstract class BaseDatabase
|
|
@@ -54,9 +54,9 @@ export abstract class BaseDatabase
|
|
|
54
54
|
let limit = page_size;
|
|
55
55
|
return { offset, limit };
|
|
56
56
|
}
|
|
57
|
-
protected _getFiltersConditions(tables: { [table: string]: string[] }, idatabase: IFilterableDatabase
|
|
57
|
+
protected _getFiltersConditions<WhereOptions>(tables: { [table: string]: string[] }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): { [table: string]: WhereOptions[] }
|
|
58
58
|
{
|
|
59
|
-
let ans: { [table: string]:
|
|
59
|
+
let ans: { [table: string]: WhereOptions[] } = {};
|
|
60
60
|
Object.keys(tables).forEach(table => ans[table] = []);
|
|
61
61
|
if (filters)
|
|
62
62
|
{
|
|
@@ -89,120 +89,102 @@ export abstract class BaseDatabase
|
|
|
89
89
|
ErrorOperation.throwHTTP(400, `Invalid number values for: '${values.join(",")}'`);
|
|
90
90
|
return nums;
|
|
91
91
|
};
|
|
92
|
-
|
|
92
|
+
let addCondition = (res: { condition: WhereOptions, partial: boolean }) =>
|
|
93
|
+
{
|
|
94
|
+
if (res.partial)
|
|
95
|
+
{
|
|
96
|
+
let wh: any = {};
|
|
97
|
+
wh[filter.column.name] = res.condition;
|
|
98
|
+
ans[filter.table.name].push(wh);
|
|
99
|
+
}
|
|
100
|
+
else
|
|
101
|
+
ans[filter.table.name].push(res.condition);
|
|
102
|
+
};
|
|
93
103
|
if (filter.operator == FilterItemOperator.all.equals)
|
|
94
104
|
{
|
|
95
|
-
let wh: { [name: string]: any } = {};
|
|
96
105
|
if (filter.not)
|
|
97
|
-
|
|
106
|
+
addCondition(idatabase.getNotIn(filter, values));
|
|
98
107
|
else
|
|
99
|
-
|
|
100
|
-
ans[filter.table.name].push(wh);
|
|
108
|
+
addCondition(idatabase.getIn(filter, values));
|
|
101
109
|
}
|
|
102
110
|
else if (filter.operator == FilterItemOperator.all.contains)
|
|
103
111
|
{
|
|
104
112
|
values.forEach(value =>
|
|
105
113
|
{
|
|
106
|
-
let wh: { [name: string]: any } = {};
|
|
107
114
|
if (filter.not)
|
|
108
|
-
|
|
115
|
+
addCondition(idatabase.getNotLike(filter, value));
|
|
109
116
|
else
|
|
110
|
-
|
|
111
|
-
ans[filter.table.name].push(wh);
|
|
117
|
+
addCondition(idatabase.getLike(filter, value));
|
|
112
118
|
});
|
|
113
119
|
}
|
|
114
120
|
else if (filter.operator == FilterItemOperator.all.regex)
|
|
115
121
|
{
|
|
116
122
|
values.forEach(value =>
|
|
117
123
|
{
|
|
118
|
-
let wh: { [name: string]: any } = {};
|
|
119
124
|
if (filter.not)
|
|
120
|
-
|
|
125
|
+
addCondition(idatabase.getNotRegex(filter, value));
|
|
121
126
|
else
|
|
122
|
-
|
|
123
|
-
ans[filter.table.name].push(wh);
|
|
127
|
+
addCondition(idatabase.getRegex(filter, value));
|
|
124
128
|
});
|
|
125
129
|
}
|
|
126
130
|
else if (filter.operator == FilterItemOperator.all.empty)
|
|
127
131
|
{
|
|
128
132
|
if (filter.not)
|
|
129
|
-
|
|
130
|
-
let wh: { [name: string]: any } = {};
|
|
131
|
-
wh[filter.column.name] = idatabase.getEmpty(filter);
|
|
132
|
-
ans[filter.table.name].push(wh);
|
|
133
|
-
}
|
|
133
|
+
addCondition(idatabase.getNotEmpty(filter));
|
|
134
134
|
else
|
|
135
|
-
|
|
136
|
-
let wh: { [name: string]: any } = {};
|
|
137
|
-
wh[filter.column.name] = idatabase.getNotEmpty(filter);
|
|
138
|
-
ans[filter.table.name].push(wh);
|
|
139
|
-
}
|
|
135
|
+
addCondition(idatabase.getEmpty(filter));
|
|
140
136
|
}
|
|
141
137
|
else if (filter.operator == FilterItemOperator.all.exists)
|
|
142
138
|
{
|
|
143
|
-
|
|
144
|
-
wh[filter.column.name] = idatabase.getExists(filter, filter.not);
|
|
145
|
-
ans[filter.table.name].push(wh);
|
|
139
|
+
addCondition(idatabase.getExists(filter, filter.not));
|
|
146
140
|
}
|
|
147
141
|
else if (filter.operator == FilterItemOperator.all.startswith)
|
|
148
142
|
{
|
|
149
143
|
values.forEach(value =>
|
|
150
144
|
{
|
|
151
|
-
let wh: { [name: string]: any } = {};
|
|
152
145
|
if (filter.not)
|
|
153
|
-
|
|
146
|
+
addCondition(idatabase.getNotStartsWith(filter, value));
|
|
154
147
|
else
|
|
155
|
-
|
|
156
|
-
ans[filter.table.name].push(wh);
|
|
148
|
+
addCondition(idatabase.getStartsWith(filter, value));
|
|
157
149
|
});
|
|
158
150
|
}
|
|
159
151
|
else if (filter.operator == FilterItemOperator.all.endswith)
|
|
160
152
|
{
|
|
161
153
|
values.forEach(value =>
|
|
162
154
|
{
|
|
163
|
-
let wh: { [name: string]: any } = {};
|
|
164
155
|
if (filter.not)
|
|
165
|
-
|
|
156
|
+
addCondition(idatabase.getNotEndsWith(filter, value));
|
|
166
157
|
else
|
|
167
|
-
|
|
168
|
-
ans[filter.table.name].push(wh);
|
|
158
|
+
addCondition(idatabase.getEndsWith(filter, value));
|
|
169
159
|
});
|
|
170
160
|
}
|
|
171
161
|
else if (filter.operator == FilterItemOperator.all.lessthan)
|
|
172
162
|
{
|
|
173
|
-
let wh: { [name: string]: any } = {};
|
|
174
163
|
if (filter.not)
|
|
175
|
-
|
|
164
|
+
addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
|
|
176
165
|
else
|
|
177
|
-
|
|
178
|
-
ans[filter.table.name].push(wh);
|
|
166
|
+
addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
|
|
179
167
|
}
|
|
180
168
|
else if (filter.operator == FilterItemOperator.all.lessthanequal)
|
|
181
169
|
{
|
|
182
|
-
let wh: { [name: string]: any } = {};
|
|
183
170
|
if (filter.not)
|
|
184
|
-
|
|
171
|
+
addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
|
|
185
172
|
else
|
|
186
|
-
|
|
187
|
-
ans[filter.table.name].push(wh);
|
|
173
|
+
addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
|
|
188
174
|
}
|
|
189
175
|
else if (filter.operator == FilterItemOperator.all.morethan)
|
|
190
176
|
{
|
|
191
|
-
let wh: { [name: string]: any } = {};
|
|
192
177
|
if (filter.not)
|
|
193
|
-
|
|
178
|
+
addCondition(idatabase.getLTE(filter, Math.max(...getNumbers())));
|
|
194
179
|
else
|
|
195
|
-
|
|
196
|
-
ans[filter.table.name].push(wh);
|
|
180
|
+
addCondition(idatabase.getGT(filter, Math.max(...getNumbers())));
|
|
197
181
|
}
|
|
198
182
|
else if (filter.operator == FilterItemOperator.all.morethanequal)
|
|
199
183
|
{
|
|
200
|
-
let wh: { [name: string]: any } = {};
|
|
201
184
|
if (filter.not)
|
|
202
|
-
|
|
185
|
+
addCondition(idatabase.getLT(filter, Math.max(...getNumbers())));
|
|
203
186
|
else
|
|
204
|
-
|
|
205
|
-
ans[filter.table.name].push(wh);
|
|
187
|
+
addCondition(idatabase.getGTE(filter, Math.max(...getNumbers())));
|
|
206
188
|
}
|
|
207
189
|
}
|
|
208
190
|
}
|