typeorm-extensions 2.2.0-rc.7 → 2.2.0-rc.9
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/README.md +70 -39
- package/dist/decorators/generated-column.decorator.d.ts +17 -0
- package/dist/decorators/generated-column.decorator.js +15 -0
- package/dist/decorators/index.d.ts +1 -0
- package/dist/decorators/index.js +1 -0
- package/dist/extensions/calculated-column.extension.d.ts +3 -3
- package/dist/extensions/calculated-column.extension.js +3 -16
- package/dist/extensions/cursor-pagination.extension.js +7 -13
- package/dist/extensions/get-many-with-totals.extension.js +9 -32
- package/dist/extensions/join-lateral.extension.js +4 -6
- package/dist/extensions/period-filter.extension.js +1 -11
- package/dist/extensions/typed/index.d.ts +1 -0
- package/dist/extensions/typed/index.js +1 -0
- package/dist/extensions/typed/typed-calculated/typed-calculated-column.extension.d.ts +25 -0
- package/dist/extensions/typed/typed-calculated/typed-calculated-column.extension.js +24 -0
- package/dist/extensions/typed/typed-having/typed-having.extension.js +1 -1
- package/dist/extensions/typed/typed-joins/typed-join-and-map.extension.js +11 -10
- package/dist/extensions/typed/typed-joins/typed-joins.extension.js +11 -22
- package/dist/extensions/typed/typed-order-by/typed-order-by.extension.js +11 -17
- package/dist/extensions/typed/typed-returning/typed-returning.extension.js +1 -9
- package/dist/extensions/typed/typed-select/typed-select.extension.js +2 -8
- package/dist/extensions/typed/typed-where/typed-period-filter.extension.js +1 -11
- package/dist/extensions/typed/typed-where/typed-where-array.extension.js +4 -18
- package/dist/extensions/typed/typed-where/typed-where-ilike.extension.js +1 -11
- package/dist/extensions/typed/typed-where/typed-where-is-any.extension.js +3 -22
- package/dist/extensions/typed/typed-where/typed-where-is-distinct-from.extension.js +3 -22
- package/dist/extensions/typed/typed-where/typed-where-is-in.extension.js +3 -23
- package/dist/extensions/typed/typed-where/typed-where-json.extension.js +4 -23
- package/dist/extensions/typed/typed-where/typed-where-lower.extension.js +1 -11
- package/dist/extensions/typed/typed-where/typed-where-similar.extension.js +1 -10
- package/dist/extensions/typed/typed-where/typed-where.extension.js +2 -12
- package/dist/extensions/union.extension.js +1 -1
- package/dist/extensions/where-array.extension.js +1 -11
- package/dist/extensions/where-exists.extension.js +4 -15
- package/dist/extensions/where-is-any.extension.d.ts +38 -160
- package/dist/extensions/where-is-any.extension.js +1 -11
- package/dist/extensions/where-is-distinct-from.extension.js +1 -11
- package/dist/extensions/where-is-in.extension.d.ts +35 -145
- package/dist/extensions/where-is-in.extension.js +11 -29
- package/dist/extensions/where-json.extension.js +1 -11
- package/dist/extensions/where-relation-exists.extension.js +5 -25
- package/dist/helpers.d.ts +1 -0
- package/dist/helpers.js +2 -1
- package/dist/index.d.ts +1 -6
- package/dist/index.js +1 -12
- package/dist/types/extensions/cursor-pagination.types.d.ts +5 -0
- package/dist/types/extensions/get-many-with-totals.types.d.ts +4 -0
- package/dist/utils/calculated-column.utils.d.ts +8 -0
- package/dist/utils/calculated-column.utils.js +20 -3
- package/dist/utils/common.utils.d.ts +2 -0
- package/dist/utils/common.utils.js +4 -1
- package/dist/utils/cursor.utils.js +4 -6
- package/dist/utils/json-path.utils.js +2 -2
- package/dist/utils/pagination.utils.d.ts +7 -0
- package/dist/utils/pagination.utils.js +20 -10
- package/dist/utils/parameter.utils.d.ts +10 -0
- package/dist/utils/parameter.utils.js +22 -1
- package/dist/utils/period.utils.js +2 -1
- package/dist/utils/prototype.utils.d.ts +9 -0
- package/dist/utils/prototype.utils.js +12 -2
- package/dist/utils/query-builder.utils.d.ts +30 -2
- package/dist/utils/query-builder.utils.js +82 -44
- package/dist/utils/table.utils.js +9 -11
- package/dist/utils/time-zone.utils.d.ts +8 -0
- package/dist/utils/time-zone.utils.js +15 -5
- package/dist/utils/typed-where.utils.d.ts +9 -0
- package/dist/utils/typed-where.utils.js +17 -0
- package/dist/utils/where.utils.d.ts +2 -0
- package/dist/utils/where.utils.js +12 -14
- package/package.json +1 -1
|
@@ -27,12 +27,4 @@ const extension = {
|
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
29
|
};
|
|
30
|
-
|
|
31
|
-
typeorm_1.InsertQueryBuilder,
|
|
32
|
-
typeorm_1.UpdateQueryBuilder,
|
|
33
|
-
typeorm_1.DeleteQueryBuilder,
|
|
34
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
35
|
-
];
|
|
36
|
-
queryBuilders.forEach((builder) => {
|
|
37
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
38
|
-
});
|
|
30
|
+
(0, prototype_utils_1.patchPrototypes)([typeorm_1.InsertQueryBuilder, typeorm_1.UpdateQueryBuilder, typeorm_1.DeleteQueryBuilder, SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder], extension);
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const typeorm_1 = require("typeorm");
|
|
4
4
|
const proxy_key_utils_1 = require("../../../utils/proxy-key.utils");
|
|
5
5
|
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
6
|
-
const sql_utils_1 = require("../../../utils/sql.utils");
|
|
7
6
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
8
7
|
// patching
|
|
9
8
|
const extension = {
|
|
@@ -23,16 +22,11 @@ const extension = {
|
|
|
23
22
|
(0, prototype_utils_1.patchPrototype)(typeorm_1.SelectQueryBuilder, extension);
|
|
24
23
|
// implementation
|
|
25
24
|
const attachSelectMethod = (query, method, selection, selectionAliasName, useQuotes) => {
|
|
26
|
-
if (selection instanceof proxy_key_utils_1.KeyHolder) {
|
|
27
|
-
return query[method](selection.toSql(undefined, useQuotes, (0, sql_utils_1.getDriverType)(query)), selectionAliasName);
|
|
28
|
-
}
|
|
29
25
|
if (Array.isArray(selection)) {
|
|
30
|
-
const arrayOfKeys = selection.flatMap((select) => select
|
|
31
|
-
? (0, proxy_key_utils_1.getSqlKeyFromProxyCallback)(select, () => query.alias, useQuotes, (0, sql_utils_1.getDriverType)(query))
|
|
32
|
-
: (0, query_builder_utils_1.getTypedSelectionKey)(query, select, useQuotes, `${method}Typed`));
|
|
26
|
+
const arrayOfKeys = selection.flatMap((select) => (0, query_builder_utils_1.getTypedSelectionKey)(query, select, useQuotes, `${method}Typed`));
|
|
33
27
|
return query[method](arrayOfKeys);
|
|
34
28
|
}
|
|
35
|
-
else if (typeof selection === 'function') {
|
|
29
|
+
else if (selection instanceof proxy_key_utils_1.KeyHolder || typeof selection === 'function') {
|
|
36
30
|
const keyArrayOrSingleKey = (0, query_builder_utils_1.getTypedSelectionKey)(query, selection, useQuotes, `${method}Typed`);
|
|
37
31
|
if (Array.isArray(keyArrayOrSingleKey)) {
|
|
38
32
|
return query[method](keyArrayOrSingleKey);
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("../../period-filter.extension");
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
6
4
|
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
7
5
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
8
6
|
const period_utils_1 = require("../../../utils/period.utils");
|
|
@@ -16,12 +14,4 @@ const extension = {
|
|
|
16
14
|
},
|
|
17
15
|
},
|
|
18
16
|
};
|
|
19
|
-
|
|
20
|
-
typeorm_1.SelectQueryBuilder,
|
|
21
|
-
typeorm_1.UpdateQueryBuilder,
|
|
22
|
-
typeorm_1.DeleteQueryBuilder,
|
|
23
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
24
|
-
];
|
|
25
|
-
queryBuilders.forEach((builder) => {
|
|
26
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
27
|
-
});
|
|
17
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("../../where-array.extension");
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
6
4
|
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
7
5
|
const sql_utils_1 = require("../../../utils/sql.utils");
|
|
8
6
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
7
|
+
const typed_where_utils_1 = require("../../../utils/typed-where.utils");
|
|
9
8
|
/* eslint-enable @typescript-eslint/no-empty-interface */
|
|
10
9
|
// patching
|
|
11
10
|
const createWhereArrayTypedMethod = (method) => function (where, values, arrayType) {
|
|
@@ -24,26 +23,13 @@ const extension = {
|
|
|
24
23
|
orWhereArrayOverlapsTyped: createWhereArrayTypedMethod('orWhereArrayOverlaps'),
|
|
25
24
|
},
|
|
26
25
|
};
|
|
27
|
-
|
|
28
|
-
typeorm_1.SelectQueryBuilder,
|
|
29
|
-
typeorm_1.UpdateQueryBuilder,
|
|
30
|
-
typeorm_1.DeleteQueryBuilder,
|
|
31
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
32
|
-
];
|
|
33
|
-
queryBuilders.forEach((builder) => {
|
|
34
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
35
|
-
});
|
|
26
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
36
27
|
// implementation
|
|
37
28
|
function attachWhereArrayTyped(builder, method, where, values, arrayType) {
|
|
38
|
-
if (typeof where
|
|
39
|
-
return builder;
|
|
40
|
-
}
|
|
41
|
-
const key = (0, query_builder_utils_1.getTypedSingleColumnKey)(builder, where, `${method}Typed`);
|
|
42
|
-
if ((0, query_builder_utils_1.isTypedJsonPath)(builder, where)) {
|
|
29
|
+
if (typeof where === 'function' && (0, query_builder_utils_1.isTypedJsonPath)(builder, where)) {
|
|
43
30
|
return attachWhereJsonArray(builder, method, where, values, arrayType);
|
|
44
31
|
}
|
|
45
|
-
|
|
46
|
-
return builder[method](key, values, arrayType);
|
|
32
|
+
return (0, typed_where_utils_1.attachTypedColumnWhere)(builder, method, where, undefined, values, arrayType);
|
|
47
33
|
}
|
|
48
34
|
const JSON_ARRAY_METHOD = /^(where|andWhere|orWhere)Array(Contains|ContainedBy|Overlaps)$/;
|
|
49
35
|
const JSON_ARRAY_OPERATORS = { Contains: '@>', ContainedBy: '<@', Overlaps: '?|' };
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const typeorm_1 = require("typeorm");
|
|
4
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
5
3
|
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
6
4
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
7
5
|
const sql_utils_1 = require("../../../utils/sql.utils");
|
|
@@ -43,15 +41,7 @@ const extension = {
|
|
|
43
41
|
orWhereSearchTyped: createWhereSearchTypedMethod('orWhere'),
|
|
44
42
|
},
|
|
45
43
|
};
|
|
46
|
-
|
|
47
|
-
typeorm_1.SelectQueryBuilder,
|
|
48
|
-
typeorm_1.UpdateQueryBuilder,
|
|
49
|
-
typeorm_1.DeleteQueryBuilder,
|
|
50
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
51
|
-
];
|
|
52
|
-
queryBuilders.forEach((builder) => {
|
|
53
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
54
|
-
});
|
|
44
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
55
45
|
// implementation
|
|
56
46
|
/** Quoted columns and raw expressions of the search selectors, in order. */
|
|
57
47
|
function getSearchColumns(builder, selectors, methodName) {
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("../../where-is-any.extension");
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
6
|
-
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
7
4
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
5
|
+
const typed_where_utils_1 = require("../../../utils/typed-where.utils");
|
|
8
6
|
/* eslint-enable @typescript-eslint/no-empty-interface */
|
|
9
7
|
// patching
|
|
10
8
|
const createWhereIsAnyTypedMethod = (method) => function (where, array, arrayType) {
|
|
11
|
-
return
|
|
9
|
+
return (0, typed_where_utils_1.attachTypedColumnWhere)(this, method, where, { value: array }, array, arrayType);
|
|
12
10
|
};
|
|
13
11
|
const extension = {
|
|
14
12
|
prototype: {
|
|
@@ -20,21 +18,4 @@ const extension = {
|
|
|
20
18
|
orWhereIsNotAnyTyped: createWhereIsAnyTypedMethod('orWhereIsNotAny'),
|
|
21
19
|
},
|
|
22
20
|
};
|
|
23
|
-
|
|
24
|
-
typeorm_1.SelectQueryBuilder,
|
|
25
|
-
typeorm_1.UpdateQueryBuilder,
|
|
26
|
-
typeorm_1.DeleteQueryBuilder,
|
|
27
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
28
|
-
];
|
|
29
|
-
queryBuilders.forEach((builder) => {
|
|
30
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
31
|
-
});
|
|
32
|
-
// implementation
|
|
33
|
-
function attachWhereIsAnyTyped(builder, method, where, array, arrayType) {
|
|
34
|
-
if (typeof where !== 'function') {
|
|
35
|
-
return builder;
|
|
36
|
-
}
|
|
37
|
-
const key = (0, query_builder_utils_1.getTypedSingleColumnKey)(builder, where, `${method}Typed`, { value: array });
|
|
38
|
-
// .andWhere(`"table"."column" = ANY(:param)`, { param: ['value'] })
|
|
39
|
-
return builder[method](key, array, arrayType);
|
|
40
|
-
}
|
|
21
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("../../where-is-distinct-from.extension");
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
6
|
-
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
7
4
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
5
|
+
const typed_where_utils_1 = require("../../../utils/typed-where.utils");
|
|
8
6
|
/* eslint-enable @typescript-eslint/no-empty-interface */
|
|
9
7
|
// patching
|
|
10
8
|
const createWhereDistinctTypedMethod = (method) => function (where, value) {
|
|
11
|
-
return
|
|
9
|
+
return (0, typed_where_utils_1.attachTypedColumnWhere)(this, method, where, { value }, value);
|
|
12
10
|
};
|
|
13
11
|
const extension = {
|
|
14
12
|
prototype: {
|
|
@@ -20,21 +18,4 @@ const extension = {
|
|
|
20
18
|
orWhereIsNotDistinctFromTyped: createWhereDistinctTypedMethod('orWhereIsNotDistinctFrom'),
|
|
21
19
|
},
|
|
22
20
|
};
|
|
23
|
-
|
|
24
|
-
typeorm_1.SelectQueryBuilder,
|
|
25
|
-
typeorm_1.UpdateQueryBuilder,
|
|
26
|
-
typeorm_1.DeleteQueryBuilder,
|
|
27
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
28
|
-
];
|
|
29
|
-
queryBuilders.forEach((builder) => {
|
|
30
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
31
|
-
});
|
|
32
|
-
// implementation
|
|
33
|
-
function attachWhereDistinctTyped(builder, method, where, value) {
|
|
34
|
-
if (typeof where !== 'function') {
|
|
35
|
-
return builder;
|
|
36
|
-
}
|
|
37
|
-
const key = (0, query_builder_utils_1.getTypedSingleColumnKey)(builder, where, `${method}Typed`, { value });
|
|
38
|
-
// .andWhereIsDistinctFrom(`"table"."column"`, value)
|
|
39
|
-
return builder[method](key, value);
|
|
40
|
-
}
|
|
21
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("../../where-is-in.extension");
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
6
|
-
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
7
4
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
5
|
+
const typed_where_utils_1 = require("../../../utils/typed-where.utils");
|
|
8
6
|
/* eslint-enable @typescript-eslint/no-empty-interface */
|
|
9
7
|
// patching
|
|
10
8
|
const createWhereIsInTypedMethod = (method) => function (where, array) {
|
|
11
|
-
return
|
|
9
|
+
return (0, typed_where_utils_1.attachTypedColumnWhere)(this, method, where, { value: array }, array);
|
|
12
10
|
};
|
|
13
11
|
const extension = {
|
|
14
12
|
prototype: {
|
|
@@ -20,22 +18,4 @@ const extension = {
|
|
|
20
18
|
orWhereIsNotInTyped: createWhereIsInTypedMethod('orWhereIsNotIn'),
|
|
21
19
|
},
|
|
22
20
|
};
|
|
23
|
-
|
|
24
|
-
typeorm_1.SelectQueryBuilder,
|
|
25
|
-
typeorm_1.UpdateQueryBuilder,
|
|
26
|
-
typeorm_1.DeleteQueryBuilder,
|
|
27
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
28
|
-
];
|
|
29
|
-
queryBuilders.forEach((builder) => {
|
|
30
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
31
|
-
});
|
|
32
|
-
// implementation
|
|
33
|
-
function attachWhereIsIn(builder, method, where, array) {
|
|
34
|
-
if (typeof where === 'function') {
|
|
35
|
-
// several columns have no single meaning (AND? OR?), and `where…` kept only the last one
|
|
36
|
-
const key = (0, query_builder_utils_1.getTypedSingleColumnKey)(builder, where, `${method}Typed`, { value: array });
|
|
37
|
-
// .andWhere(`"table"."column" IN (:...values)`, { values: ['value'] })
|
|
38
|
-
return builder[method](key, array);
|
|
39
|
-
}
|
|
40
|
-
return builder;
|
|
41
|
-
}
|
|
21
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("../../where-json.extension");
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
6
|
-
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
7
4
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
5
|
+
const typed_where_utils_1 = require("../../../utils/typed-where.utils");
|
|
8
6
|
/* eslint-enable @typescript-eslint/no-empty-interface */
|
|
9
7
|
// patching
|
|
10
8
|
const createWhereJsonTypedMethod = (method) => function (where, value) {
|
|
11
|
-
|
|
9
|
+
// one signature for both: `value` is the JSON value or the key, each method checks its own
|
|
10
|
+
return (0, typed_where_utils_1.attachTypedColumnWhere)(this, method, where, { accessor: 'json' }, value);
|
|
12
11
|
};
|
|
13
12
|
const extension = {
|
|
14
13
|
prototype: {
|
|
@@ -20,22 +19,4 @@ const extension = {
|
|
|
20
19
|
orWhereJsonHasKeyTyped: createWhereJsonTypedMethod('orWhereJsonHasKey'),
|
|
21
20
|
},
|
|
22
21
|
};
|
|
23
|
-
|
|
24
|
-
typeorm_1.SelectQueryBuilder,
|
|
25
|
-
typeorm_1.UpdateQueryBuilder,
|
|
26
|
-
typeorm_1.DeleteQueryBuilder,
|
|
27
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
28
|
-
];
|
|
29
|
-
queryBuilders.forEach((builder) => {
|
|
30
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
31
|
-
});
|
|
32
|
-
// implementation
|
|
33
|
-
function attachWhereJsonTyped(builder, method, where, value) {
|
|
34
|
-
if (typeof where !== 'function') {
|
|
35
|
-
return builder;
|
|
36
|
-
}
|
|
37
|
-
const key = (0, query_builder_utils_1.getTypedSingleColumnKey)(builder, where, `${method}Typed`, { accessor: 'json' });
|
|
38
|
-
// .andWhereJsonContains(`"table"."column"`, { role: 'admin' }) / .andWhereJsonHasKey(`"table"."column"`, 'role')
|
|
39
|
-
// (one signature for both: `value` is the JSON value or the key, each method checks its own)
|
|
40
|
-
return builder[method](key, value);
|
|
41
|
-
}
|
|
22
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const typeorm_1 = require("typeorm");
|
|
4
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
5
3
|
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
6
4
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
7
5
|
const sql_utils_1 = require("../../../utils/sql.utils");
|
|
@@ -56,15 +54,7 @@ const extension = {
|
|
|
56
54
|
orWhereIsInLowerTyped: createWhereIsInLowerTypedMethod('orWhere'),
|
|
57
55
|
},
|
|
58
56
|
};
|
|
59
|
-
|
|
60
|
-
typeorm_1.SelectQueryBuilder,
|
|
61
|
-
typeorm_1.UpdateQueryBuilder,
|
|
62
|
-
typeorm_1.DeleteQueryBuilder,
|
|
63
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
64
|
-
];
|
|
65
|
-
queryBuilders.forEach((builder) => {
|
|
66
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
67
|
-
});
|
|
57
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
68
58
|
// implementation
|
|
69
59
|
const lower = (sql) => `LOWER(${sql})`;
|
|
70
60
|
/**
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const typeorm_1 = require("typeorm");
|
|
4
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
5
4
|
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
6
5
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
7
6
|
const sql_utils_1 = require("../../../utils/sql.utils");
|
|
@@ -63,13 +62,5 @@ const scoreExtension = {
|
|
|
63
62
|
},
|
|
64
63
|
},
|
|
65
64
|
};
|
|
66
|
-
|
|
67
|
-
typeorm_1.SelectQueryBuilder,
|
|
68
|
-
typeorm_1.UpdateQueryBuilder,
|
|
69
|
-
typeorm_1.DeleteQueryBuilder,
|
|
70
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
71
|
-
];
|
|
72
|
-
queryBuilders.forEach((builder) => {
|
|
73
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
74
|
-
});
|
|
65
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
75
66
|
(0, prototype_utils_1.patchPrototype)(typeorm_1.SelectQueryBuilder, scoreExtension);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const typeorm_1 = require("typeorm");
|
|
4
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
5
3
|
const query_builder_utils_1 = require("../../../utils/query-builder.utils");
|
|
6
4
|
const prototype_utils_1 = require("../../../utils/prototype.utils");
|
|
7
5
|
const where_utils_1 = require("../../../utils/where.utils");
|
|
@@ -17,22 +15,14 @@ const extension = {
|
|
|
17
15
|
orWhereTyped: createWhereTypedMethod('orWhere'),
|
|
18
16
|
},
|
|
19
17
|
};
|
|
20
|
-
|
|
21
|
-
typeorm_1.SelectQueryBuilder,
|
|
22
|
-
typeorm_1.UpdateQueryBuilder,
|
|
23
|
-
typeorm_1.DeleteQueryBuilder,
|
|
24
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
25
|
-
];
|
|
26
|
-
queryBuilders.forEach((builder) => {
|
|
27
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
28
|
-
});
|
|
18
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
29
19
|
// implementation
|
|
30
20
|
function attachTypedWhere(builder, method, where, conditions, parameters, options) {
|
|
31
21
|
const { addValue } = options || {};
|
|
32
22
|
if (typeof where === 'function') {
|
|
33
23
|
// several columns have no single meaning (AND? OR?), and `where…` kept only the last one
|
|
34
24
|
// a path into a JSON column is cast to the type of the value it is compared with
|
|
35
|
-
const value = (0, where_utils_1.
|
|
25
|
+
const value = (0, where_utils_1.getComparedValue)(parameters);
|
|
36
26
|
const key = (0, query_builder_utils_1.getTypedSingleColumnKey)(builder, where, `${method}Typed`, { value });
|
|
37
27
|
return (0, where_utils_1.attachWhere)(builder, method, key, conditions, parameters, {
|
|
38
28
|
addValue,
|
|
@@ -46,7 +46,7 @@ function ordersOrLimits(query, sql) {
|
|
|
46
46
|
return Object.keys(allOrderBys !== null && allOrderBys !== void 0 ? allOrderBys : {}).length > 0 || [limit, offset, take, skip].some((value) => value !== undefined);
|
|
47
47
|
}
|
|
48
48
|
function bindParameters(builder, query) {
|
|
49
|
-
const [sql, parameters] = (0, parameter_utils_1.
|
|
49
|
+
const [sql, parameters] = (0, parameter_utils_1.toSubQuerySql)(query);
|
|
50
50
|
builder.setParameters(parameters);
|
|
51
51
|
return sql;
|
|
52
52
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const typeorm_1 = require("typeorm");
|
|
4
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
5
3
|
const prototype_utils_1 = require("../utils/prototype.utils");
|
|
6
4
|
const query_builder_utils_1 = require("../utils/query-builder.utils");
|
|
7
5
|
const sql_utils_1 = require("../utils/sql.utils");
|
|
@@ -21,15 +19,7 @@ const extension = {
|
|
|
21
19
|
orWhereArrayOverlaps: createWhereArrayMethod('orWhere', '&&'),
|
|
22
20
|
},
|
|
23
21
|
};
|
|
24
|
-
|
|
25
|
-
typeorm_1.SelectQueryBuilder,
|
|
26
|
-
typeorm_1.UpdateQueryBuilder,
|
|
27
|
-
typeorm_1.DeleteQueryBuilder,
|
|
28
|
-
SoftDeleteQueryBuilder_1.SoftDeleteQueryBuilder,
|
|
29
|
-
];
|
|
30
|
-
queryBuilders.forEach((builder) => {
|
|
31
|
-
(0, prototype_utils_1.patchPrototype)(builder, extension);
|
|
32
|
-
});
|
|
22
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, extension);
|
|
33
23
|
// implementation
|
|
34
24
|
function attachWhereArray(builder, method, field, operator, values, arrayType) {
|
|
35
25
|
if (!method || typeof field !== 'string') {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.attachExists = void 0;
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const SoftDeleteQueryBuilder_1 = require("typeorm/query-builder/SoftDeleteQueryBuilder");
|
|
6
4
|
const prototype_utils_1 = require("../utils/prototype.utils");
|
|
7
5
|
const parameter_utils_1 = require("../utils/parameter.utils");
|
|
6
|
+
const query_builder_utils_1 = require("../utils/query-builder.utils");
|
|
8
7
|
const existsMethods = {
|
|
9
8
|
prototype: {
|
|
10
9
|
whereExists(subQuery) {
|
|
@@ -33,10 +32,8 @@ const notExistsMethods = {
|
|
|
33
32
|
};
|
|
34
33
|
// only where the builder lacks them: SelectQueryBuilder keeps TypeORM's own whereExists /
|
|
35
34
|
// andWhereExists / orWhereExists, and a later TypeORM that adds any of these keeps its own
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
(0, prototype_utils_1.patchPrototype)(builder, notExistsMethods, { onlyMissing: true });
|
|
39
|
-
});
|
|
35
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, existsMethods, { onlyMissing: true });
|
|
36
|
+
(0, prototype_utils_1.patchPrototypes)(prototype_utils_1.WHERE_QUERY_BUILDERS, notExistsMethods, { onlyMissing: true });
|
|
40
37
|
// implementation
|
|
41
38
|
function attachExists(builder, method, subQuery, negate) {
|
|
42
39
|
const [condition, parameters] = (0, parameter_utils_1.withUniqueParameterNames)(...getExistsCondition(subQuery));
|
|
@@ -48,15 +45,7 @@ exports.attachExists = attachExists;
|
|
|
48
45
|
* drops GROUP BY, which leaves a HAVING to aggregate the whole subquery: the GROUP BY stays with one.
|
|
49
46
|
*/
|
|
50
47
|
function getExistsCondition(subQuery) {
|
|
51
|
-
const query = subQuery
|
|
52
|
-
.clone()
|
|
53
|
-
.orderBy()
|
|
54
|
-
.offset(undefined)
|
|
55
|
-
.limit(undefined)
|
|
56
|
-
.skip(undefined)
|
|
57
|
-
.take(undefined)
|
|
58
|
-
.select('1')
|
|
59
|
-
.setOption('disable-global-order');
|
|
48
|
+
const query = (0, query_builder_utils_1.withoutPaging)(subQuery.clone()).select('1');
|
|
60
49
|
if (query.expressionMap.havings.length === 0) {
|
|
61
50
|
query.groupBy();
|
|
62
51
|
}
|