@mikro-orm/sql 7.0.3 → 7.0.4-dev.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/AbstractSqlConnection.d.ts +58 -94
- package/AbstractSqlConnection.js +238 -235
- package/AbstractSqlDriver.d.ts +155 -410
- package/AbstractSqlDriver.js +1941 -2064
- package/AbstractSqlPlatform.d.ts +73 -83
- package/AbstractSqlPlatform.js +158 -162
- package/PivotCollectionPersister.d.ts +15 -33
- package/PivotCollectionPersister.js +160 -158
- package/README.md +1 -1
- package/SqlEntityManager.d.ts +22 -67
- package/SqlEntityManager.js +38 -54
- package/SqlEntityRepository.d.ts +14 -14
- package/SqlEntityRepository.js +23 -23
- package/dialects/mssql/MsSqlNativeQueryBuilder.d.ts +12 -12
- package/dialects/mssql/MsSqlNativeQueryBuilder.js +194 -192
- package/dialects/mysql/BaseMySqlPlatform.d.ts +45 -64
- package/dialects/mysql/BaseMySqlPlatform.js +131 -134
- package/dialects/mysql/MySqlExceptionConverter.d.ts +6 -6
- package/dialects/mysql/MySqlExceptionConverter.js +77 -91
- package/dialects/mysql/MySqlNativeQueryBuilder.d.ts +3 -3
- package/dialects/mysql/MySqlNativeQueryBuilder.js +69 -66
- package/dialects/mysql/MySqlSchemaHelper.d.ts +39 -39
- package/dialects/mysql/MySqlSchemaHelper.js +319 -327
- package/dialects/oracledb/OracleDialect.d.ts +52 -81
- package/dialects/oracledb/OracleDialect.js +149 -155
- package/dialects/oracledb/OracleNativeQueryBuilder.d.ts +12 -12
- package/dialects/oracledb/OracleNativeQueryBuilder.js +236 -232
- package/dialects/postgresql/BasePostgreSqlPlatform.d.ts +105 -108
- package/dialects/postgresql/BasePostgreSqlPlatform.js +350 -351
- package/dialects/postgresql/FullTextType.d.ts +6 -10
- package/dialects/postgresql/FullTextType.js +51 -51
- package/dialects/postgresql/PostgreSqlExceptionConverter.d.ts +5 -5
- package/dialects/postgresql/PostgreSqlExceptionConverter.js +43 -55
- package/dialects/postgresql/PostgreSqlNativeQueryBuilder.d.ts +1 -1
- package/dialects/postgresql/PostgreSqlNativeQueryBuilder.js +4 -4
- package/dialects/postgresql/PostgreSqlSchemaHelper.d.ts +82 -102
- package/dialects/postgresql/PostgreSqlSchemaHelper.js +705 -733
- package/dialects/sqlite/BaseSqliteConnection.d.ts +5 -3
- package/dialects/sqlite/BaseSqliteConnection.js +19 -21
- package/dialects/sqlite/NodeSqliteDialect.d.ts +1 -1
- package/dialects/sqlite/NodeSqliteDialect.js +23 -23
- package/dialects/sqlite/SqliteDriver.d.ts +1 -1
- package/dialects/sqlite/SqliteDriver.js +3 -3
- package/dialects/sqlite/SqliteExceptionConverter.d.ts +6 -6
- package/dialects/sqlite/SqliteExceptionConverter.js +51 -67
- package/dialects/sqlite/SqliteNativeQueryBuilder.d.ts +2 -2
- package/dialects/sqlite/SqliteNativeQueryBuilder.js +7 -7
- package/dialects/sqlite/SqlitePlatform.d.ts +72 -63
- package/dialects/sqlite/SqlitePlatform.js +139 -139
- package/dialects/sqlite/SqliteSchemaHelper.d.ts +60 -70
- package/dialects/sqlite/SqliteSchemaHelper.js +520 -533
- package/package.json +2 -2
- package/plugin/index.d.ts +35 -42
- package/plugin/index.js +36 -43
- package/plugin/transformer.d.ts +94 -117
- package/plugin/transformer.js +881 -890
- package/query/ArrayCriteriaNode.d.ts +4 -4
- package/query/ArrayCriteriaNode.js +18 -18
- package/query/CriteriaNode.d.ts +25 -35
- package/query/CriteriaNode.js +123 -133
- package/query/CriteriaNodeFactory.d.ts +6 -49
- package/query/CriteriaNodeFactory.js +94 -97
- package/query/NativeQueryBuilder.d.ts +118 -118
- package/query/NativeQueryBuilder.js +480 -484
- package/query/ObjectCriteriaNode.d.ts +12 -12
- package/query/ObjectCriteriaNode.js +282 -298
- package/query/QueryBuilder.d.ts +904 -1546
- package/query/QueryBuilder.js +2164 -2294
- package/query/QueryBuilderHelper.d.ts +72 -153
- package/query/QueryBuilderHelper.js +1028 -1079
- package/query/ScalarCriteriaNode.d.ts +3 -3
- package/query/ScalarCriteriaNode.js +46 -53
- package/query/enums.d.ts +14 -14
- package/query/enums.js +14 -14
- package/query/raw.d.ts +6 -16
- package/query/raw.js +10 -10
- package/schema/DatabaseSchema.d.ts +50 -73
- package/schema/DatabaseSchema.js +307 -331
- package/schema/DatabaseTable.d.ts +73 -96
- package/schema/DatabaseTable.js +927 -1012
- package/schema/SchemaComparator.d.ts +66 -70
- package/schema/SchemaComparator.js +740 -766
- package/schema/SchemaHelper.d.ts +95 -109
- package/schema/SchemaHelper.js +659 -675
- package/schema/SqlSchemaGenerator.d.ts +58 -78
- package/schema/SqlSchemaGenerator.js +501 -535
- package/typings.d.ts +266 -380
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
GroupOperator,
|
|
3
|
-
isRaw,
|
|
4
|
-
JsonType,
|
|
5
|
-
RawQueryFragment,
|
|
6
|
-
ReferenceKind,
|
|
7
|
-
Utils,
|
|
8
|
-
ValidationError,
|
|
9
|
-
} from '@mikro-orm/core';
|
|
1
|
+
import { GroupOperator, isRaw, JsonType, RawQueryFragment, ReferenceKind, Utils, ValidationError, } from '@mikro-orm/core';
|
|
10
2
|
import { ObjectCriteriaNode } from './ObjectCriteriaNode.js';
|
|
11
3
|
import { ArrayCriteriaNode } from './ArrayCriteriaNode.js';
|
|
12
4
|
import { ScalarCriteriaNode } from './ScalarCriteriaNode.js';
|
|
@@ -15,97 +7,102 @@ import { EMBEDDABLE_ARRAY_OPS } from './enums.js';
|
|
|
15
7
|
* @internal
|
|
16
8
|
*/
|
|
17
9
|
export class CriteriaNodeFactory {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
static createNode(metadata, entityName, payload, parent, key, validate = true) {
|
|
11
|
+
const rawField = RawQueryFragment.isKnownFragmentSymbol(key);
|
|
12
|
+
const scalar = Utils.isPrimaryKey(payload) ||
|
|
13
|
+
isRaw(payload) ||
|
|
14
|
+
payload instanceof RegExp ||
|
|
15
|
+
payload instanceof Date ||
|
|
16
|
+
rawField;
|
|
17
|
+
if (Array.isArray(payload) && !scalar) {
|
|
18
|
+
return this.createArrayNode(metadata, entityName, payload, parent, key, validate);
|
|
19
|
+
}
|
|
20
|
+
if (Utils.isPlainObject(payload) && !scalar) {
|
|
21
|
+
return this.createObjectNode(metadata, entityName, payload, parent, key, validate);
|
|
22
|
+
}
|
|
23
|
+
return this.createScalarNode(metadata, entityName, payload, parent, key, validate);
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
static createScalarNode(metadata, entityName, payload, parent, key, validate = true) {
|
|
26
|
+
const node = new ScalarCriteriaNode(metadata, entityName, parent, key, validate);
|
|
27
|
+
node.payload = payload;
|
|
28
|
+
return node;
|
|
27
29
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// we care about branching only for $and
|
|
40
|
-
if (key === '$and' && payload.length > 1) {
|
|
41
|
-
n.index = index;
|
|
42
|
-
}
|
|
43
|
-
return n;
|
|
44
|
-
});
|
|
45
|
-
return node;
|
|
46
|
-
}
|
|
47
|
-
static createObjectNode(metadata, entityName, payload, parent, key, validate = true) {
|
|
48
|
-
const meta = metadata.find(entityName);
|
|
49
|
-
const node = new ObjectCriteriaNode(metadata, entityName, parent, key, validate, payload.__strict);
|
|
50
|
-
node.payload = {};
|
|
51
|
-
for (const k of Utils.getObjectQueryKeys(payload)) {
|
|
52
|
-
node.payload[k] = this.createObjectItemNode(metadata, entityName, node, payload, k, meta, validate);
|
|
30
|
+
static createArrayNode(metadata, entityName, payload, parent, key, validate = true) {
|
|
31
|
+
const node = new ArrayCriteriaNode(metadata, entityName, parent, key, validate);
|
|
32
|
+
node.payload = payload.map((item, index) => {
|
|
33
|
+
const n = this.createNode(metadata, entityName, item, node, undefined, validate);
|
|
34
|
+
// we care about branching only for $and
|
|
35
|
+
if (key === '$and' && payload.length > 1) {
|
|
36
|
+
n.index = index;
|
|
37
|
+
}
|
|
38
|
+
return n;
|
|
39
|
+
});
|
|
40
|
+
return node;
|
|
53
41
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (isNotEmbedded && prop?.customType instanceof JsonType) {
|
|
63
|
-
return this.createScalarNode(metadata, childEntity, val, node, key, validate);
|
|
42
|
+
static createObjectNode(metadata, entityName, payload, parent, key, validate = true) {
|
|
43
|
+
const meta = metadata.find(entityName);
|
|
44
|
+
const node = new ObjectCriteriaNode(metadata, entityName, parent, key, validate, payload.__strict);
|
|
45
|
+
node.payload = {};
|
|
46
|
+
for (const k of Utils.getObjectQueryKeys(payload)) {
|
|
47
|
+
node.payload[k] = this.createObjectItemNode(metadata, entityName, node, payload, k, meta, validate);
|
|
48
|
+
}
|
|
49
|
+
return node;
|
|
64
50
|
}
|
|
65
|
-
|
|
66
|
-
|
|
51
|
+
static createObjectItemNode(metadata, entityName, node, payload, key, meta, validate = true) {
|
|
52
|
+
const rawField = RawQueryFragment.isKnownFragmentSymbol(key);
|
|
53
|
+
const prop = rawField ? null : meta?.properties[key];
|
|
54
|
+
const childEntity = prop && prop.kind !== ReferenceKind.SCALAR ? prop.targetMeta.class : entityName;
|
|
55
|
+
const isNotEmbedded = rawField || prop?.kind !== ReferenceKind.EMBEDDED;
|
|
56
|
+
const val = payload[key];
|
|
57
|
+
if (isNotEmbedded && prop?.customType instanceof JsonType) {
|
|
58
|
+
return this.createScalarNode(metadata, childEntity, val, node, key, validate);
|
|
59
|
+
}
|
|
60
|
+
if (prop?.kind === ReferenceKind.SCALAR && val != null && Object.keys(val).some(f => f in GroupOperator)) {
|
|
61
|
+
throw ValidationError.cannotUseGroupOperatorsInsideScalars(entityName, prop.name, payload);
|
|
62
|
+
}
|
|
63
|
+
if (isNotEmbedded) {
|
|
64
|
+
return this.createNode(metadata, childEntity, val, node, key, validate);
|
|
65
|
+
}
|
|
66
|
+
if (val == null) {
|
|
67
|
+
const map = Object.keys(prop.embeddedProps).reduce((oo, k) => {
|
|
68
|
+
oo[prop.embeddedProps[k].name] = null;
|
|
69
|
+
return oo;
|
|
70
|
+
}, {});
|
|
71
|
+
return this.createNode(metadata, entityName, map, node, key, validate);
|
|
72
|
+
}
|
|
73
|
+
// For array embeddeds stored as real columns, route property-level queries
|
|
74
|
+
// as scalar nodes so QueryBuilderHelper generates EXISTS subqueries with
|
|
75
|
+
// JSON array iteration. Keys containing `~` indicate the property lives
|
|
76
|
+
// inside a parent's object-mode JSON column (MetadataDiscovery uses `~` as
|
|
77
|
+
// the glue for object embeds), where JSON path access is used instead.
|
|
78
|
+
if (prop.array && !String(key).includes('~')) {
|
|
79
|
+
const keys = Object.keys(val);
|
|
80
|
+
const hasOnlyArrayOps = keys.every(k => EMBEDDABLE_ARRAY_OPS.includes(k));
|
|
81
|
+
if (!hasOnlyArrayOps) {
|
|
82
|
+
return this.createScalarNode(metadata, entityName, val, node, key, validate);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// array operators can be used on embedded properties
|
|
86
|
+
const operator = Object.keys(val).some(f => Utils.isOperator(f) && !EMBEDDABLE_ARRAY_OPS.includes(f));
|
|
87
|
+
if (operator) {
|
|
88
|
+
throw ValidationError.cannotUseOperatorsInsideEmbeddables(entityName, prop.name, payload);
|
|
89
|
+
}
|
|
90
|
+
const map = Object.keys(val).reduce((oo, k) => {
|
|
91
|
+
const embeddedProp = prop.embeddedProps[k] ?? Object.values(prop.embeddedProps).find(p => p.name === k);
|
|
92
|
+
if (!embeddedProp && !EMBEDDABLE_ARRAY_OPS.includes(k)) {
|
|
93
|
+
throw ValidationError.invalidEmbeddableQuery(entityName, k, prop.type);
|
|
94
|
+
}
|
|
95
|
+
if (embeddedProp) {
|
|
96
|
+
oo[embeddedProp.name] = val[k];
|
|
97
|
+
}
|
|
98
|
+
else if (typeof val[k] === 'object') {
|
|
99
|
+
oo[k] = JSON.stringify(val[k]);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
oo[k] = val[k];
|
|
103
|
+
}
|
|
104
|
+
return oo;
|
|
105
|
+
}, {});
|
|
106
|
+
return this.createNode(metadata, entityName, map, node, key, validate);
|
|
67
107
|
}
|
|
68
|
-
if (isNotEmbedded) {
|
|
69
|
-
return this.createNode(metadata, childEntity, val, node, key, validate);
|
|
70
|
-
}
|
|
71
|
-
if (val == null) {
|
|
72
|
-
const map = Object.keys(prop.embeddedProps).reduce((oo, k) => {
|
|
73
|
-
oo[prop.embeddedProps[k].name] = null;
|
|
74
|
-
return oo;
|
|
75
|
-
}, {});
|
|
76
|
-
return this.createNode(metadata, entityName, map, node, key, validate);
|
|
77
|
-
}
|
|
78
|
-
// For array embeddeds stored as real columns, route property-level queries
|
|
79
|
-
// as scalar nodes so QueryBuilderHelper generates EXISTS subqueries with
|
|
80
|
-
// JSON array iteration. Keys containing `~` indicate the property lives
|
|
81
|
-
// inside a parent's object-mode JSON column (MetadataDiscovery uses `~` as
|
|
82
|
-
// the glue for object embeds), where JSON path access is used instead.
|
|
83
|
-
if (prop.array && !String(key).includes('~')) {
|
|
84
|
-
const keys = Object.keys(val);
|
|
85
|
-
const hasOnlyArrayOps = keys.every(k => EMBEDDABLE_ARRAY_OPS.includes(k));
|
|
86
|
-
if (!hasOnlyArrayOps) {
|
|
87
|
-
return this.createScalarNode(metadata, entityName, val, node, key, validate);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// array operators can be used on embedded properties
|
|
91
|
-
const operator = Object.keys(val).some(f => Utils.isOperator(f) && !EMBEDDABLE_ARRAY_OPS.includes(f));
|
|
92
|
-
if (operator) {
|
|
93
|
-
throw ValidationError.cannotUseOperatorsInsideEmbeddables(entityName, prop.name, payload);
|
|
94
|
-
}
|
|
95
|
-
const map = Object.keys(val).reduce((oo, k) => {
|
|
96
|
-
const embeddedProp = prop.embeddedProps[k] ?? Object.values(prop.embeddedProps).find(p => p.name === k);
|
|
97
|
-
if (!embeddedProp && !EMBEDDABLE_ARRAY_OPS.includes(k)) {
|
|
98
|
-
throw ValidationError.invalidEmbeddableQuery(entityName, k, prop.type);
|
|
99
|
-
}
|
|
100
|
-
if (embeddedProp) {
|
|
101
|
-
oo[embeddedProp.name] = val[k];
|
|
102
|
-
} else if (typeof val[k] === 'object') {
|
|
103
|
-
oo[k] = JSON.stringify(val[k]);
|
|
104
|
-
} else {
|
|
105
|
-
oo[k] = val[k];
|
|
106
|
-
}
|
|
107
|
-
return oo;
|
|
108
|
-
}, {});
|
|
109
|
-
return this.createNode(metadata, entityName, map, node, key, validate);
|
|
110
|
-
}
|
|
111
108
|
}
|
|
@@ -3,135 +3,135 @@ import { QueryType } from './enums.js';
|
|
|
3
3
|
import type { AbstractSqlPlatform } from '../AbstractSqlPlatform.js';
|
|
4
4
|
/** Options for Common Table Expression (CTE) definitions. */
|
|
5
5
|
export interface CteOptions {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/** Column names for the CTE. */
|
|
7
|
+
columns?: string[];
|
|
8
|
+
/** PostgreSQL: MATERIALIZED / NOT MATERIALIZED */
|
|
9
|
+
materialized?: boolean;
|
|
10
10
|
}
|
|
11
11
|
interface CteClause extends CteOptions {
|
|
12
|
-
|
|
13
|
-
sql: string;
|
|
14
|
-
params: unknown[];
|
|
15
|
-
recursive?: boolean;
|
|
16
|
-
}
|
|
17
|
-
interface Options {
|
|
18
|
-
tableName?: string | RawQueryFragment;
|
|
19
|
-
indexHint?: string;
|
|
20
|
-
select?: (string | RawQueryFragment)[];
|
|
21
|
-
distinct?: boolean;
|
|
22
|
-
distinctOn?: string[];
|
|
23
|
-
joins?: {
|
|
24
|
-
sql: string;
|
|
25
|
-
params: unknown[];
|
|
26
|
-
}[];
|
|
27
|
-
groupBy?: (string | RawQueryFragment)[];
|
|
28
|
-
where?: {
|
|
12
|
+
name: string;
|
|
29
13
|
sql: string;
|
|
30
14
|
params: unknown[];
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
15
|
+
recursive?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface Options {
|
|
18
|
+
tableName?: string | RawQueryFragment;
|
|
19
|
+
indexHint?: string;
|
|
20
|
+
select?: (string | RawQueryFragment)[];
|
|
21
|
+
distinct?: boolean;
|
|
22
|
+
distinctOn?: string[];
|
|
23
|
+
joins?: {
|
|
24
|
+
sql: string;
|
|
25
|
+
params: unknown[];
|
|
26
|
+
}[];
|
|
27
|
+
groupBy?: (string | RawQueryFragment)[];
|
|
28
|
+
where?: {
|
|
29
|
+
sql: string;
|
|
30
|
+
params: unknown[];
|
|
31
|
+
};
|
|
32
|
+
having?: {
|
|
33
|
+
sql: string;
|
|
34
|
+
params: unknown[];
|
|
35
|
+
};
|
|
36
|
+
orderBy?: string;
|
|
37
|
+
limit?: number;
|
|
38
|
+
offset?: number;
|
|
39
|
+
data?: Dictionary;
|
|
40
|
+
onConflict?: OnConflictClause;
|
|
41
|
+
lockMode?: LockMode;
|
|
42
|
+
lockTables?: string[];
|
|
43
|
+
returning?: (string | RawQueryFragment | [name: string, type: unknown])[];
|
|
44
|
+
comment?: string[];
|
|
45
|
+
hintComment?: string[];
|
|
46
|
+
flags?: Set<QueryFlag>;
|
|
47
|
+
wrap?: [prefix: string, suffix: string];
|
|
48
|
+
ctes?: CteClause[];
|
|
49
49
|
}
|
|
50
50
|
/** Options for specifying the target table in FROM/INTO clauses. */
|
|
51
51
|
export interface TableOptions {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
schema?: string;
|
|
53
|
+
indexHint?: string;
|
|
54
|
+
alias?: string;
|
|
55
55
|
}
|
|
56
56
|
interface OnConflictClause {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
fields: string[] | RawQueryFragment;
|
|
58
|
+
ignore?: boolean;
|
|
59
|
+
merge?: Dictionary | (string | RawQueryFragment)[];
|
|
60
|
+
where?: {
|
|
61
|
+
sql: string;
|
|
62
|
+
params: unknown[];
|
|
63
|
+
};
|
|
64
64
|
}
|
|
65
65
|
/** @internal */
|
|
66
66
|
export declare class NativeQueryBuilder implements Subquery {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
67
|
+
protected readonly platform: AbstractSqlPlatform;
|
|
68
|
+
readonly __subquery: true;
|
|
69
|
+
protected type?: QueryType;
|
|
70
|
+
protected parts: string[];
|
|
71
|
+
protected params: unknown[];
|
|
72
|
+
protected options: Options;
|
|
73
|
+
constructor(platform: AbstractSqlPlatform);
|
|
74
|
+
select(fields: string | RawQueryFragment | (string | RawQueryFragment)[]): this;
|
|
75
|
+
count(fields?: string | RawQueryFragment | (string | RawQueryFragment)[], distinct?: boolean): this;
|
|
76
|
+
into(tableName: string | RawQueryFragment | NativeQueryBuilder, options?: TableOptions): this;
|
|
77
|
+
from(tableName: string | RawQueryFragment | NativeQueryBuilder, options?: TableOptions): this;
|
|
78
|
+
where(sql: string, params: unknown[]): this;
|
|
79
|
+
having(sql: string, params: unknown[]): this;
|
|
80
|
+
groupBy(groupBy: (string | RawQueryFragment)[]): this;
|
|
81
|
+
join(sql: string, params: unknown[]): this;
|
|
82
|
+
orderBy(orderBy: string): this;
|
|
83
|
+
/**
|
|
84
|
+
* The sub-query is compiled eagerly at call time — later mutations to the
|
|
85
|
+
* sub-query builder will not be reflected in this CTE.
|
|
86
|
+
*/
|
|
87
|
+
with(name: string, query: NativeQueryBuilder | RawQueryFragment, options?: CteOptions): this;
|
|
88
|
+
/**
|
|
89
|
+
* Adds a recursive CTE (`WITH RECURSIVE` on PostgreSQL/MySQL/SQLite, plain `WITH` on MSSQL).
|
|
90
|
+
* The sub-query is compiled eagerly — later mutations will not be reflected.
|
|
91
|
+
*/
|
|
92
|
+
withRecursive(name: string, query: NativeQueryBuilder | RawQueryFragment, options?: CteOptions): this;
|
|
93
|
+
private addCte;
|
|
94
|
+
toString(): string;
|
|
95
|
+
compile(): {
|
|
96
|
+
sql: string;
|
|
97
|
+
params: unknown[];
|
|
98
|
+
};
|
|
99
|
+
protected addLockClause(): void;
|
|
100
|
+
protected addOnConflictClause(): void;
|
|
101
|
+
protected combineParts(): {
|
|
102
|
+
sql: string;
|
|
103
|
+
params: unknown[];
|
|
104
|
+
};
|
|
105
|
+
limit(limit: number): this;
|
|
106
|
+
offset(offset: number): this;
|
|
107
|
+
insert(data: Dictionary): this;
|
|
108
|
+
update(data: Dictionary): this;
|
|
109
|
+
delete(): this;
|
|
110
|
+
truncate(): this;
|
|
111
|
+
distinct(): this;
|
|
112
|
+
distinctOn(fields: string[]): this;
|
|
113
|
+
onConflict(options: OnConflictClause): OnConflictClause;
|
|
114
|
+
returning(fields: (string | RawQueryFragment | [name: string, type: unknown])[]): this;
|
|
115
|
+
lockMode(lockMode: LockMode, lockTables?: string[]): this;
|
|
116
|
+
comment(comment: string | string[]): this;
|
|
117
|
+
hintComment(comment: string | string[]): this;
|
|
118
|
+
setFlags(flags: Set<QueryFlag>): this;
|
|
119
|
+
clear(clause: keyof Options): this;
|
|
120
|
+
wrap(prefix: string, suffix: string): this;
|
|
121
|
+
as(alias: string): this;
|
|
122
|
+
toRaw(): RawQueryFragment;
|
|
123
|
+
protected compileSelect(): void;
|
|
124
|
+
protected getFields(): string;
|
|
125
|
+
protected compileInsert(): void;
|
|
126
|
+
protected addOutputClause(type: 'inserted' | 'deleted'): void;
|
|
127
|
+
protected processInsertData(): string[];
|
|
128
|
+
protected compileUpdate(): void;
|
|
129
|
+
protected compileDelete(): void;
|
|
130
|
+
protected compileTruncate(): void;
|
|
131
|
+
protected addHintComment(): void;
|
|
132
|
+
protected compileCtes(): void;
|
|
133
|
+
protected getCteKeyword(hasRecursive: boolean): string;
|
|
134
|
+
protected getTableName(): string;
|
|
135
|
+
protected quote(id: string | RawQueryFragment | NativeQueryBuilder): string;
|
|
136
136
|
}
|
|
137
137
|
export {};
|