joist-orm 1.50.6 → 1.52.0
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/build/src/EntityMetadata.d.ts +1 -1
- package/build/src/QueryBuilder.js +75 -223
- package/build/src/QueryBuilder.js.map +1 -1
- package/build/src/QueryParser.d.ts +56 -15
- package/build/src/QueryParser.js +301 -16
- package/build/src/QueryParser.js.map +1 -1
- package/build/src/drivers/InMemoryDriver.js +4 -4
- package/build/src/drivers/InMemoryDriver.js.map +1 -1
- package/build/src/index.js +12 -3
- package/build/src/index.js.map +1 -1
- package/build/src/serde.d.ts +1 -1
- package/build/src/serde.js +1 -1
- package/build/src/serde.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -17,7 +17,7 @@ export interface EntityMetadata<T extends Entity> {
|
|
|
17
17
|
tagName: string;
|
|
18
18
|
fields: Record<string, Field>;
|
|
19
19
|
allFields: Record<string, Field & {
|
|
20
|
-
|
|
20
|
+
aliasSuffix: string;
|
|
21
21
|
}>;
|
|
22
22
|
config: ConfigApi<T, any>;
|
|
23
23
|
timestampFields: TimestampFields;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.abbreviation = exports.buildQuery = void 0;
|
|
4
|
-
const joist_utils_1 = require("joist-utils");
|
|
5
|
-
const Entity_1 = require("./Entity");
|
|
6
4
|
const EntityGraphQLFilter_1 = require("./EntityGraphQLFilter");
|
|
7
5
|
const EntityManager_1 = require("./EntityManager");
|
|
8
6
|
const EntityMetadata_1 = require("./EntityMetadata");
|
|
@@ -18,115 +16,36 @@ const utils_1 = require("./utils");
|
|
|
18
16
|
function buildQuery(knex, type, filter) {
|
|
19
17
|
const meta = (0, EntityMetadata_1.getMetadata)(type);
|
|
20
18
|
const { where, orderBy, limit, offset } = filter;
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (field.kind === "poly") {
|
|
46
|
-
if (Array.isArray(clause)) {
|
|
47
|
-
const ids = clause.map((e) => (0, index_1.maybeResolveReferenceToId)(e));
|
|
48
|
-
const idsByConstructor = (0, joist_utils_1.groupBy)(ids, (id) => (0, index_1.getConstructorFromTaggedId)(id).name);
|
|
49
|
-
query = query.where((query) => field.serde.columns.reduce((query, { columnName, otherMetadata, mapToDb }) => {
|
|
50
|
-
const ids = idsByConstructor[otherMetadata().cstr.name];
|
|
51
|
-
return ids && ids.length > 0 ? query.orWhereIn(`${alias}.${columnName}`, ids.map(mapToDb)) : query;
|
|
52
|
-
}, query));
|
|
53
|
-
}
|
|
54
|
-
else if ((0, Entity_1.isEntity)(clause) || typeof clause === "string") {
|
|
55
|
-
query = addPolyClause(query, alias, field, meta, clause);
|
|
56
|
-
}
|
|
57
|
-
else if (clause === null) {
|
|
58
|
-
query = field.components.reduce((query, component) => addPolyClause(query, alias, field, meta,
|
|
59
|
-
// Not really sure if this is safe, being lazy for now...
|
|
60
|
-
(0, index_1.asConcreteCstr)(component.otherMetadata().cstr), clause), query);
|
|
61
|
-
}
|
|
62
|
-
else if (typeof clause === "object" && Object.keys(clause).length === 1 && "ne" in clause) {
|
|
63
|
-
const { ne: value } = clause;
|
|
64
|
-
if ((0, Entity_1.isEntity)(value) || typeof value === "string") {
|
|
65
|
-
const column = polyColumnFor(meta, field, value);
|
|
66
|
-
query = query.where((query) => query
|
|
67
|
-
.whereNot(`${alias}.${column.columnName}`, column.mapToDb(value))
|
|
68
|
-
// for some reason whereNot excludes null values, so explicitly include them here
|
|
69
|
-
.orWhereNull(`${alias}.${column.columnName}`));
|
|
70
|
-
}
|
|
71
|
-
else if (value === null) {
|
|
72
|
-
query = query.where((b) => field.components.reduce((b, { columnName }) => b.orWhereNotNull(`${alias}.${columnName}`), b));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else if (field.kind === "o2o") {
|
|
77
|
-
// Add `otherTable.column = ...` clause, unless `key` is not in `where`, i.e. there is only an orderBy for this fk
|
|
78
|
-
const otherMeta = field.otherMetadata();
|
|
79
|
-
const otherAlias = getAlias(otherMeta.tableName);
|
|
80
|
-
const otherColumn = otherMeta.fields[field.otherFieldName];
|
|
81
|
-
query = query.leftJoin(`${otherMeta.tableName} AS ${otherAlias}`, `${otherAlias}.${otherColumn.serde.columns[0].columnName}`, `${alias}.id`);
|
|
82
|
-
const [shouldAddClauses, _query] = hasClause
|
|
83
|
-
? addForeignKeyClause(query, otherAlias, otherMeta.fields["id"].serde.columns[0], clause)
|
|
84
|
-
: [false, query];
|
|
85
|
-
query = _query;
|
|
86
|
-
if (shouldAddClauses || hasOrder) {
|
|
87
|
-
addClauses(otherMeta, otherAlias, shouldAddClauses ? clause : undefined, hasOrder ? order : undefined);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else if (field.kind === "m2o") {
|
|
91
|
-
const serde = (meta.fields[key] ?? (0, utils_1.fail)(`${key} not found`)).serde;
|
|
92
|
-
// TODO Currently hardcoded to single-column support; poly is handled above this
|
|
93
|
-
const column = serde.columns[0];
|
|
94
|
-
// Add `otherTable.column = ...` clause, unless `key` is not in `where`, i.e. there is only an orderBy for this fk
|
|
95
|
-
const [whereNeedsJoin, _query] = hasClause ? addForeignKeyClause(query, alias, column, clause) : [false, query];
|
|
96
|
-
query = _query;
|
|
97
|
-
if (whereNeedsJoin || hasOrder) {
|
|
98
|
-
// Add a join for this column
|
|
99
|
-
const otherMeta = field.otherMetadata();
|
|
100
|
-
const otherAlias = getAlias(otherMeta.tableName);
|
|
101
|
-
query = query.innerJoin(`${otherMeta.tableName} AS ${otherAlias}`, `${alias}.${column.columnName}`, `${otherAlias}.id`);
|
|
102
|
-
// Then recurse to add its conditions to the query
|
|
103
|
-
addClauses(otherMeta, otherAlias, whereNeedsJoin ? clause : undefined, hasOrder ? order : undefined);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
const field = meta.allFields[key] ?? (0, utils_1.fail)(`${key} not found`);
|
|
108
|
-
const serde = field.serde;
|
|
109
|
-
// TODO Currently hardcoded to single-column support; poly is handled above this
|
|
110
|
-
const column = serde.columns[0];
|
|
111
|
-
// TODO Currently we only support base-type WHEREs if the sub-type is the main `em.find`
|
|
112
|
-
// const maybeBaseAlias = field.alias;
|
|
113
|
-
query = hasClause ? addPrimitiveClause(query, alias, column, clause) : query;
|
|
114
|
-
// This is not a foreign key column, so it'll have the primitive filters/order bys
|
|
115
|
-
if (order) {
|
|
116
|
-
query = query.orderBy(`${alias}.${column.columnName}`, order);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
19
|
+
const parsed = (0, index_1.parseFindQuery)(meta, filter.where, filter.orderBy);
|
|
20
|
+
const primary = parsed.tables.find((t) => t.join === "primary");
|
|
21
|
+
let query = knex.from(`${primary.table} AS ${primary.alias}`);
|
|
22
|
+
parsed.selects.forEach((s) => {
|
|
23
|
+
query.select(knex.raw(s));
|
|
24
|
+
});
|
|
25
|
+
parsed.tables.forEach((t) => {
|
|
26
|
+
if (t.join === "left") {
|
|
27
|
+
query.leftOuterJoin(`${t.table} AS ${t.alias}`, t.col1, t.col2);
|
|
28
|
+
}
|
|
29
|
+
else if (t.join !== "primary") {
|
|
30
|
+
query.join(`${t.table} AS ${t.alias}`, t.col1, t.col2);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
parsed.conditions.forEach((c) => {
|
|
34
|
+
addColumnCondition(query, c);
|
|
35
|
+
});
|
|
36
|
+
parsed.complexConditions &&
|
|
37
|
+
parsed.complexConditions.forEach((c) => {
|
|
38
|
+
addComplexCondition(query, c);
|
|
39
|
+
});
|
|
40
|
+
parsed.orderBys &&
|
|
41
|
+
parsed.orderBys.forEach(({ alias, column, order }) => {
|
|
42
|
+
query.orderBy(`${alias}.${column}`, order);
|
|
119
43
|
});
|
|
120
|
-
}
|
|
121
|
-
addClauses(meta, alias, where, orderBy);
|
|
122
|
-
if ((0, index_1.needsClassPerTableJoins)(meta)) {
|
|
123
|
-
(0, index_1.addTablePerClassJoinsAndClassTag)(knex, meta, query, alias);
|
|
124
|
-
}
|
|
125
44
|
// Even if they already added orders, add id as the last one to get deterministic output
|
|
126
|
-
query
|
|
127
|
-
query
|
|
45
|
+
query.orderBy(`${primary.alias}.id`);
|
|
46
|
+
query.limit(limit || EntityManager_1.entityLimit);
|
|
128
47
|
if (offset) {
|
|
129
|
-
query
|
|
48
|
+
query.offset(offset);
|
|
130
49
|
}
|
|
131
50
|
return query;
|
|
132
51
|
}
|
|
@@ -138,122 +57,55 @@ function abbreviation(tableName) {
|
|
|
138
57
|
.join("");
|
|
139
58
|
}
|
|
140
59
|
exports.abbreviation = abbreviation;
|
|
141
|
-
function
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// I.e. this could be { authorFk: authorEntity | null | id | { ...recurse... } }
|
|
154
|
-
const clauseKeys = typeof clause === "object" && clause !== null
|
|
155
|
-
? Object.keys(clause).filter((key) => clause[key] !== undefined)
|
|
156
|
-
: [];
|
|
157
|
-
if ((0, Entity_1.isEntity)(clause) || typeof clause === "string" || Array.isArray(clause)) {
|
|
158
|
-
// I.e. { authorFk: authorEntity | id | id[] }
|
|
159
|
-
if ((0, Entity_1.isEntity)(clause) && clause.id === undefined) {
|
|
160
|
-
// The user is filtering on an unsaved entity, which will just never have any rows, so throw in -1
|
|
161
|
-
return [false, query.where(`${alias}.${column.columnName}`, -1)];
|
|
162
|
-
}
|
|
163
|
-
else if (Array.isArray(clause)) {
|
|
164
|
-
return [
|
|
165
|
-
false,
|
|
166
|
-
query.whereIn(`${alias}.${column.columnName}`, clause.map((id) => column.mapToDb(id))),
|
|
167
|
-
];
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
return [false, query.where(`${alias}.${column.columnName}`, column.mapToDb(clause))];
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
else if (clause === null) {
|
|
174
|
-
// I.e. { authorFk: null | undefined }
|
|
175
|
-
return [false, query.whereNull(`${alias}.${column.columnName}`)];
|
|
176
|
-
}
|
|
177
|
-
else if (clauseKeys.length === 1 && clauseKeys[0] === "id") {
|
|
178
|
-
// I.e. { authorFk: { id: string } } || { authorFk: { id: string[] } }
|
|
179
|
-
// If only querying on the id, we can skip the join
|
|
180
|
-
return [false, addPrimitiveClause(query, alias, column, clause["id"])];
|
|
181
|
-
}
|
|
182
|
-
else if (clauseKeys.length === 1 && clauseKeys[0] === "ne") {
|
|
183
|
-
// I.e. { authorFk: { ne: string | null | undefined } }
|
|
184
|
-
const value = clause["ne"];
|
|
185
|
-
if (value === null || value === undefined) {
|
|
186
|
-
return [false, query.whereNotNull(`${alias}.${column.columnName}`)];
|
|
187
|
-
}
|
|
188
|
-
else if (typeof value === "string") {
|
|
189
|
-
return [false, query.whereNot(`${alias}.${column.columnName}`, column.mapToDb(value))];
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
throw new Error("Not implemented");
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
// I.e. { authorFk: { ...authorFilter... } }
|
|
197
|
-
return [clause !== undefined, query];
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
function addPrimitiveClause(query, alias, column, clause) {
|
|
201
|
-
if (clause && typeof clause === "object" && EntityGraphQLFilter_1.operators.find((op) => Object.keys(clause).includes(op))) {
|
|
202
|
-
// I.e. `{ primitiveField: { gt: value } }`
|
|
203
|
-
return Object.entries(clause).reduce((query, [op, value]) => addPrimitiveOperator(query, alias, column, op, value), query);
|
|
204
|
-
}
|
|
205
|
-
else if (clause && typeof clause === "object" && "op" in clause) {
|
|
206
|
-
// I.e. { primitiveField: { op: "gt", value: 1 } }`
|
|
207
|
-
return addPrimitiveOperator(query, alias, column, clause.op, clause.value);
|
|
208
|
-
}
|
|
209
|
-
else if (Array.isArray(clause)) {
|
|
210
|
-
// I.e. `{ primitiveField: value[] }`
|
|
211
|
-
if (column.isArray) {
|
|
212
|
-
return query.where(`${alias}.${column.columnName}`, "@>", column.mapToDb(clause));
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
return query.whereIn(`${alias}.${column.columnName}`, clause.map((v) => column.mapToDb(v)));
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
else if (clause === null) {
|
|
219
|
-
// I.e. `{ primitiveField: null }`
|
|
220
|
-
return query.whereNull(`${alias}.${column.columnName}`);
|
|
221
|
-
}
|
|
222
|
-
else if (clause === undefined) {
|
|
223
|
-
// I.e. `{ primitiveField: undefined }`
|
|
224
|
-
// Currently we treat this like a partial filter, i.e. don't include it. Seems odd
|
|
225
|
-
// unless this is opt-in, i.e. maybe only do this for `findGql`?
|
|
226
|
-
return query;
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
// I.e. `{ primitiveField: value }`
|
|
230
|
-
// TODO In theory could add a addToQuery method to Serde to generalize this to multi-columns fields.
|
|
231
|
-
return query.where(`${alias}.${column.columnName}`, column.mapToDb(clause));
|
|
232
|
-
}
|
|
60
|
+
function addComplexCondition(query, complex) {
|
|
61
|
+
query.where((q) => {
|
|
62
|
+
const op = complex.op === "and" ? "andWhere" : "orWhere";
|
|
63
|
+
complex.conditions.forEach((c) => {
|
|
64
|
+
if ("op" in c) {
|
|
65
|
+
throw new Error("Not implemented");
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
q[op]((q) => addColumnCondition(q, c));
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
233
72
|
}
|
|
234
|
-
function
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
73
|
+
function addColumnCondition(query, cc) {
|
|
74
|
+
const { alias, column, cond } = cc;
|
|
75
|
+
const columnName = `${alias}.${column}`;
|
|
76
|
+
switch (cond.kind) {
|
|
77
|
+
case "eq":
|
|
78
|
+
case "ne":
|
|
79
|
+
case "gte":
|
|
80
|
+
case "gt":
|
|
81
|
+
case "lte":
|
|
82
|
+
case "lt":
|
|
83
|
+
case "like":
|
|
84
|
+
case "ilike":
|
|
85
|
+
const fn = EntityGraphQLFilter_1.opToFn[cond.kind] ?? (0, utils_1.fail)(`Invalid operator ${cond.kind}`);
|
|
86
|
+
query.where(columnName, fn, cond.value);
|
|
87
|
+
break;
|
|
88
|
+
case "is-null":
|
|
89
|
+
query.whereNull(columnName);
|
|
90
|
+
break;
|
|
91
|
+
case "not-null":
|
|
92
|
+
query.whereNotNull(columnName);
|
|
93
|
+
break;
|
|
94
|
+
case "in":
|
|
95
|
+
query.whereIn(columnName, cond.value);
|
|
96
|
+
break;
|
|
97
|
+
case "@>":
|
|
98
|
+
query.where(columnName, "@>", cond.value);
|
|
99
|
+
break;
|
|
100
|
+
case "between":
|
|
101
|
+
const [min, max] = cond.value;
|
|
102
|
+
query.where(columnName, ">=", min);
|
|
103
|
+
query.where(columnName, "<=", max);
|
|
104
|
+
break;
|
|
105
|
+
case "pass":
|
|
106
|
+
break;
|
|
107
|
+
default:
|
|
108
|
+
(0, utils_1.assertNever)(cond);
|
|
257
109
|
}
|
|
258
110
|
}
|
|
259
111
|
//# sourceMappingURL=QueryBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../src/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../src/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,53 @@
|
|
|
1
|
-
import { ValueFilter } from "./EntityFilter";
|
|
1
|
+
import { OrderBy, ValueFilter } from "./EntityFilter";
|
|
2
2
|
import { EntityMetadata } from "./EntityMetadata";
|
|
3
|
+
export interface ExpressionCondition {
|
|
4
|
+
op: "and" | "or";
|
|
5
|
+
conditions: (ExpressionCondition | ColumnCondition)[];
|
|
6
|
+
}
|
|
7
|
+
export interface ColumnCondition {
|
|
8
|
+
alias: string;
|
|
9
|
+
column: string;
|
|
10
|
+
cond: ParsedValueFilter<any>;
|
|
11
|
+
}
|
|
12
|
+
interface PrimaryTable {
|
|
13
|
+
join: "primary";
|
|
14
|
+
alias: string;
|
|
15
|
+
table: string;
|
|
16
|
+
}
|
|
17
|
+
interface JoinTable {
|
|
18
|
+
join: "m2o" | "o2m" | "o2o" | "left";
|
|
19
|
+
alias: string;
|
|
20
|
+
table: string;
|
|
21
|
+
col1: string;
|
|
22
|
+
col2: string;
|
|
23
|
+
}
|
|
24
|
+
type ParsedTable = PrimaryTable | JoinTable;
|
|
25
|
+
interface ParsedOrderBy {
|
|
26
|
+
alias: string;
|
|
27
|
+
column: string;
|
|
28
|
+
order: OrderBy;
|
|
29
|
+
}
|
|
30
|
+
/** The result of parsing an `em.find` filter. */
|
|
31
|
+
interface ParsedFindQuery {
|
|
32
|
+
selects: string[];
|
|
33
|
+
/** The primary table plus any joins. */
|
|
34
|
+
tables: ParsedTable[];
|
|
35
|
+
/** Simple conditions that are ANDd together. */
|
|
36
|
+
conditions: ColumnCondition[];
|
|
37
|
+
/** Any optional complex conditions that will be ANDd with the simple conditions. */
|
|
38
|
+
complexConditions?: ExpressionCondition[];
|
|
39
|
+
/** Any optional orders to add before the default 'order by id'. */
|
|
40
|
+
orderBys?: ParsedOrderBy[];
|
|
41
|
+
}
|
|
42
|
+
/** Parses an `em.find` filter into a `ParsedFindQuery` for simpler execution. */
|
|
43
|
+
export declare function parseFindQuery(meta: EntityMetadata<any>, filter: any, orderBy?: any): ParsedFindQuery;
|
|
3
44
|
/** An ADT version of `EntityFilter`. */
|
|
4
|
-
export type ParsedEntityFilter = {
|
|
5
|
-
kind: "eq";
|
|
6
|
-
id: number | null;
|
|
7
|
-
} | {
|
|
8
|
-
kind: "ne";
|
|
9
|
-
id: number | null;
|
|
10
|
-
} | {
|
|
11
|
-
kind: "in";
|
|
12
|
-
ids: number[];
|
|
13
|
-
} | {
|
|
45
|
+
export type ParsedEntityFilter = ParsedValueFilter<string | number> | {
|
|
14
46
|
kind: "join";
|
|
15
|
-
subFilter:
|
|
47
|
+
subFilter: object;
|
|
16
48
|
};
|
|
17
|
-
|
|
49
|
+
/** Parses an entity filter, which could be "just an id", an array of ids, or a nested filter. */
|
|
50
|
+
export declare function parseEntityFilter(filter: any): ParsedEntityFilter;
|
|
18
51
|
/**
|
|
19
52
|
* An ADT version of `ValueFilter`.
|
|
20
53
|
*
|
|
@@ -22,10 +55,13 @@ export declare function parseEntityFilter(meta: EntityMetadata<any>, filter: any
|
|
|
22
55
|
*/
|
|
23
56
|
export type ParsedValueFilter<V> = {
|
|
24
57
|
kind: "eq";
|
|
25
|
-
value: V
|
|
58
|
+
value: V;
|
|
26
59
|
} | {
|
|
27
60
|
kind: "in";
|
|
28
61
|
value: V[];
|
|
62
|
+
} | {
|
|
63
|
+
kind: "@>";
|
|
64
|
+
value: V[];
|
|
29
65
|
} | {
|
|
30
66
|
kind: "gt";
|
|
31
67
|
value: V;
|
|
@@ -34,7 +70,11 @@ export type ParsedValueFilter<V> = {
|
|
|
34
70
|
value: V;
|
|
35
71
|
} | {
|
|
36
72
|
kind: "ne";
|
|
37
|
-
value: V
|
|
73
|
+
value: V;
|
|
74
|
+
} | {
|
|
75
|
+
kind: "is-null";
|
|
76
|
+
} | {
|
|
77
|
+
kind: "not-null";
|
|
38
78
|
} | {
|
|
39
79
|
kind: "lt";
|
|
40
80
|
value: V;
|
|
@@ -54,3 +94,4 @@ export type ParsedValueFilter<V> = {
|
|
|
54
94
|
value: [V, V];
|
|
55
95
|
};
|
|
56
96
|
export declare function parseValueFilter<V>(filter: ValueFilter<V, any>): ParsedValueFilter<V>;
|
|
97
|
+
export {};
|