@mikro-orm/sql 7.0.2-dev.8 → 7.0.2
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 +95 -47
- package/AbstractSqlConnection.js +240 -232
- package/AbstractSqlDriver.d.ts +412 -155
- package/AbstractSqlDriver.js +2062 -1937
- package/AbstractSqlPlatform.d.ts +84 -73
- package/AbstractSqlPlatform.js +163 -158
- package/PivotCollectionPersister.d.ts +33 -15
- package/PivotCollectionPersister.js +158 -160
- package/README.md +128 -294
- package/SqlEntityManager.d.ts +68 -20
- package/SqlEntityManager.js +54 -37
- package/SqlEntityRepository.d.ts +15 -14
- package/SqlEntityRepository.js +24 -23
- package/dialects/mssql/MsSqlNativeQueryBuilder.d.ts +12 -12
- package/dialects/mssql/MsSqlNativeQueryBuilder.js +192 -194
- package/dialects/mysql/BaseMySqlPlatform.d.ts +64 -45
- package/dialects/mysql/BaseMySqlPlatform.js +134 -131
- package/dialects/mysql/MySqlExceptionConverter.d.ts +6 -6
- package/dialects/mysql/MySqlExceptionConverter.js +91 -77
- package/dialects/mysql/MySqlNativeQueryBuilder.d.ts +3 -3
- package/dialects/mysql/MySqlNativeQueryBuilder.js +66 -69
- package/dialects/mysql/MySqlSchemaHelper.d.ts +39 -39
- package/dialects/mysql/MySqlSchemaHelper.js +327 -319
- package/dialects/oracledb/OracleDialect.d.ts +81 -52
- package/dialects/oracledb/OracleDialect.js +155 -149
- package/dialects/oracledb/OracleNativeQueryBuilder.d.ts +12 -12
- package/dialects/oracledb/OracleNativeQueryBuilder.js +232 -236
- package/dialects/postgresql/BasePostgreSqlPlatform.d.ts +108 -105
- package/dialects/postgresql/BasePostgreSqlPlatform.js +351 -350
- package/dialects/postgresql/FullTextType.d.ts +10 -6
- package/dialects/postgresql/FullTextType.js +51 -51
- package/dialects/postgresql/PostgreSqlExceptionConverter.d.ts +5 -5
- package/dialects/postgresql/PostgreSqlExceptionConverter.js +55 -43
- package/dialects/postgresql/PostgreSqlNativeQueryBuilder.d.ts +1 -1
- package/dialects/postgresql/PostgreSqlNativeQueryBuilder.js +4 -4
- package/dialects/postgresql/PostgreSqlSchemaHelper.d.ts +102 -82
- package/dialects/postgresql/PostgreSqlSchemaHelper.js +711 -683
- package/dialects/sqlite/BaseSqliteConnection.d.ts +3 -5
- package/dialects/sqlite/BaseSqliteConnection.js +21 -19
- 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 +67 -51
- package/dialects/sqlite/SqliteNativeQueryBuilder.d.ts +2 -2
- package/dialects/sqlite/SqliteNativeQueryBuilder.js +7 -7
- package/dialects/sqlite/SqlitePlatform.d.ts +63 -72
- package/dialects/sqlite/SqlitePlatform.js +139 -139
- package/dialects/sqlite/SqliteSchemaHelper.d.ts +70 -60
- package/dialects/sqlite/SqliteSchemaHelper.js +533 -520
- package/package.json +4 -4
- package/plugin/index.d.ts +44 -35
- package/plugin/index.js +44 -36
- package/plugin/transformer.d.ts +117 -94
- package/plugin/transformer.js +890 -881
- package/query/ArrayCriteriaNode.d.ts +4 -4
- package/query/ArrayCriteriaNode.js +18 -18
- package/query/CriteriaNode.d.ts +35 -25
- package/query/CriteriaNode.js +133 -123
- package/query/CriteriaNodeFactory.d.ts +49 -6
- package/query/CriteriaNodeFactory.js +97 -94
- package/query/NativeQueryBuilder.d.ts +120 -117
- package/query/NativeQueryBuilder.js +484 -480
- package/query/ObjectCriteriaNode.d.ts +12 -12
- package/query/ObjectCriteriaNode.js +298 -282
- package/query/QueryBuilder.d.ts +1546 -904
- package/query/QueryBuilder.js +2270 -2145
- package/query/QueryBuilderHelper.d.ts +153 -72
- package/query/QueryBuilderHelper.js +1079 -1028
- package/query/ScalarCriteriaNode.d.ts +3 -3
- package/query/ScalarCriteriaNode.js +53 -46
- package/query/enums.d.ts +16 -14
- package/query/enums.js +16 -14
- package/query/raw.d.ts +16 -6
- package/query/raw.js +10 -10
- package/schema/DatabaseSchema.d.ts +73 -50
- package/schema/DatabaseSchema.js +331 -307
- package/schema/DatabaseTable.d.ts +96 -73
- package/schema/DatabaseTable.js +1012 -927
- package/schema/SchemaComparator.d.ts +58 -54
- package/schema/SchemaComparator.js +745 -719
- package/schema/SchemaHelper.d.ts +110 -80
- package/schema/SchemaHelper.js +676 -645
- package/schema/SqlSchemaGenerator.d.ts +79 -58
- package/schema/SqlSchemaGenerator.js +536 -501
- package/typings.d.ts +380 -266
package/typings.d.ts
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
import type { Generated, Kysely } from 'kysely';
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
CheckCallback,
|
|
4
|
+
DeferMode,
|
|
5
|
+
Dictionary,
|
|
6
|
+
EntityName,
|
|
7
|
+
EntityProperty,
|
|
8
|
+
EntitySchemaWithMeta,
|
|
9
|
+
FilterQuery,
|
|
10
|
+
GroupOperator,
|
|
11
|
+
IndexColumnOptions,
|
|
12
|
+
InferEntityName,
|
|
13
|
+
Opt,
|
|
14
|
+
Primary,
|
|
15
|
+
PrimaryProperty,
|
|
16
|
+
QueryFlag,
|
|
17
|
+
QueryOrderMap,
|
|
18
|
+
RawQueryFragment,
|
|
19
|
+
Scalar,
|
|
20
|
+
Type,
|
|
21
|
+
} from '@mikro-orm/core';
|
|
3
22
|
import type { JoinType, QueryType } from './query/enums.js';
|
|
4
23
|
import type { DatabaseSchema } from './schema/DatabaseSchema.js';
|
|
5
24
|
import type { DatabaseTable } from './schema/DatabaseTable.js';
|
|
@@ -7,320 +26,415 @@ import type { AnyQueryBuilder } from './query/QueryBuilder.js';
|
|
|
7
26
|
import type { CteOptions, NativeQueryBuilder } from './query/NativeQueryBuilder.js';
|
|
8
27
|
import type { MikroKyselyPluginOptions } from './plugin/index.js';
|
|
9
28
|
export interface Table {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
29
|
+
table_name: string;
|
|
30
|
+
schema_name?: string;
|
|
31
|
+
table_comment?: string;
|
|
13
32
|
}
|
|
14
33
|
/** @internal */
|
|
15
34
|
export type InternalField<T> = string | RawQueryFragment | AnyQueryBuilder | NativeQueryBuilder;
|
|
16
35
|
export interface JoinOptions {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
table: string;
|
|
37
|
+
schema?: string;
|
|
38
|
+
type: JoinType;
|
|
39
|
+
alias: string;
|
|
40
|
+
ownerAlias: string;
|
|
41
|
+
inverseAlias?: string;
|
|
42
|
+
joinColumns?: string[];
|
|
43
|
+
inverseJoinColumns?: string[];
|
|
44
|
+
primaryKeys?: string[];
|
|
45
|
+
path?: string;
|
|
46
|
+
prop: EntityProperty;
|
|
47
|
+
cond: Dictionary;
|
|
48
|
+
cond_?: Dictionary;
|
|
49
|
+
subquery?: string;
|
|
50
|
+
nested?: Set<JoinOptions>;
|
|
51
|
+
parent?: JoinOptions;
|
|
33
52
|
}
|
|
34
53
|
export interface Column {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
name: string;
|
|
55
|
+
type: string;
|
|
56
|
+
mappedType: Type<unknown>;
|
|
57
|
+
unsigned?: boolean;
|
|
58
|
+
autoincrement?: boolean;
|
|
59
|
+
nullable?: boolean;
|
|
60
|
+
length?: number;
|
|
61
|
+
precision?: number;
|
|
62
|
+
scale?: number;
|
|
63
|
+
default?: string | null;
|
|
64
|
+
defaultConstraint?: string;
|
|
65
|
+
comment?: string;
|
|
66
|
+
generated?: string;
|
|
67
|
+
nativeEnumName?: string;
|
|
68
|
+
enumItems?: string[];
|
|
69
|
+
primary?: boolean;
|
|
70
|
+
unique?: boolean;
|
|
71
|
+
/** mysql only */
|
|
72
|
+
extra?: string;
|
|
73
|
+
ignoreSchemaChanges?: ('type' | 'extra' | 'default')[];
|
|
55
74
|
}
|
|
56
75
|
export interface ForeignKey {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
76
|
+
columnNames: string[];
|
|
77
|
+
constraintName: string;
|
|
78
|
+
localTableName: string;
|
|
79
|
+
referencedTableName: string;
|
|
80
|
+
referencedColumnNames: string[];
|
|
81
|
+
updateRule?: string;
|
|
82
|
+
deleteRule?: string;
|
|
83
|
+
deferMode?: DeferMode;
|
|
65
84
|
}
|
|
66
85
|
export interface IndexDef {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
86
|
+
columnNames: string[];
|
|
87
|
+
keyName: string;
|
|
88
|
+
unique: boolean;
|
|
89
|
+
constraint: boolean;
|
|
90
|
+
primary: boolean;
|
|
91
|
+
composite?: boolean;
|
|
92
|
+
expression?: string;
|
|
93
|
+
options?: Dictionary;
|
|
94
|
+
type?:
|
|
95
|
+
| string
|
|
96
|
+
| Readonly<{
|
|
76
97
|
indexType?: string;
|
|
77
98
|
storageEngineIndexType?: 'hash' | 'btree';
|
|
78
99
|
predicate?: string;
|
|
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
|
-
|
|
100
|
+
}>;
|
|
101
|
+
deferMode?: DeferMode | `${DeferMode}`;
|
|
102
|
+
/**
|
|
103
|
+
* Advanced column options for the index.
|
|
104
|
+
* When specified, these options override the simple columnNames for index generation.
|
|
105
|
+
*/
|
|
106
|
+
columns?: IndexColumnOptions[];
|
|
107
|
+
/**
|
|
108
|
+
* Columns to include in the index but not as part of the key (PostgreSQL, MSSQL).
|
|
109
|
+
*/
|
|
110
|
+
include?: string[];
|
|
111
|
+
/** Fill factor for the index as a percentage 0-100 (PostgreSQL, MSSQL). */
|
|
112
|
+
fillFactor?: number;
|
|
113
|
+
/**
|
|
114
|
+
* Whether the index is invisible/hidden from the query optimizer (MySQL 8+, MariaDB 10.6+, MongoDB).
|
|
115
|
+
*/
|
|
116
|
+
invisible?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Whether the index is disabled (MSSQL only).
|
|
119
|
+
*/
|
|
120
|
+
disabled?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Whether the index should be clustered (MariaDB, MSSQL).
|
|
123
|
+
*/
|
|
124
|
+
clustered?: boolean;
|
|
104
125
|
}
|
|
105
126
|
export interface CheckDef<T = unknown> {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
127
|
+
name: string;
|
|
128
|
+
expression: string | CheckCallback<T>;
|
|
129
|
+
definition?: string;
|
|
130
|
+
columnName?: string;
|
|
110
131
|
}
|
|
111
132
|
export interface ColumnDifference {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
133
|
+
oldColumnName: string;
|
|
134
|
+
column: Column;
|
|
135
|
+
fromColumn: Column;
|
|
136
|
+
changedProperties: Set<string>;
|
|
116
137
|
}
|
|
117
138
|
export interface TableDifference {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
139
|
+
name: string;
|
|
140
|
+
changedComment?: string;
|
|
141
|
+
fromTable: DatabaseTable;
|
|
142
|
+
toTable: DatabaseTable;
|
|
143
|
+
addedColumns: Dictionary<Column>;
|
|
144
|
+
changedColumns: Dictionary<ColumnDifference>;
|
|
145
|
+
removedColumns: Dictionary<Column>;
|
|
146
|
+
renamedColumns: Dictionary<Column>;
|
|
147
|
+
addedIndexes: Dictionary<IndexDef>;
|
|
148
|
+
changedIndexes: Dictionary<IndexDef>;
|
|
149
|
+
removedIndexes: Dictionary<IndexDef>;
|
|
150
|
+
renamedIndexes: Dictionary<IndexDef>;
|
|
151
|
+
addedChecks: Dictionary<CheckDef>;
|
|
152
|
+
changedChecks: Dictionary<CheckDef>;
|
|
153
|
+
removedChecks: Dictionary<CheckDef>;
|
|
154
|
+
addedForeignKeys: Dictionary<ForeignKey>;
|
|
155
|
+
changedForeignKeys: Dictionary<ForeignKey>;
|
|
156
|
+
removedForeignKeys: Dictionary<ForeignKey>;
|
|
136
157
|
}
|
|
137
158
|
export interface DatabaseView {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
159
|
+
name: string;
|
|
160
|
+
schema?: string;
|
|
161
|
+
definition: string;
|
|
162
|
+
/** True if this is a materialized view (PostgreSQL only). */
|
|
163
|
+
materialized?: boolean;
|
|
164
|
+
/** For materialized views, whether data was populated on creation. */
|
|
165
|
+
withData?: boolean;
|
|
145
166
|
}
|
|
146
167
|
export interface SchemaDifference {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
168
|
+
newNamespaces: Set<string>;
|
|
169
|
+
newNativeEnums: {
|
|
170
|
+
name: string;
|
|
171
|
+
schema?: string;
|
|
172
|
+
items: string[];
|
|
173
|
+
}[];
|
|
174
|
+
newTables: Dictionary<DatabaseTable>;
|
|
175
|
+
changedTables: Dictionary<TableDifference>;
|
|
176
|
+
removedTables: Dictionary<DatabaseTable>;
|
|
177
|
+
newViews: Dictionary<DatabaseView>;
|
|
178
|
+
changedViews: Dictionary<{
|
|
179
|
+
from: DatabaseView;
|
|
180
|
+
to: DatabaseView;
|
|
181
|
+
}>;
|
|
182
|
+
removedViews: Dictionary<DatabaseView>;
|
|
183
|
+
removedNamespaces: Set<string>;
|
|
184
|
+
removedNativeEnums: {
|
|
185
|
+
name: string;
|
|
186
|
+
schema?: string;
|
|
187
|
+
}[];
|
|
188
|
+
orphanedForeignKeys: ForeignKey[];
|
|
189
|
+
fromSchema: DatabaseSchema;
|
|
169
190
|
}
|
|
170
191
|
export interface IQueryBuilder<T> {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
192
|
+
readonly alias: string;
|
|
193
|
+
readonly type: QueryType;
|
|
194
|
+
/** @internal */
|
|
195
|
+
state: {
|
|
196
|
+
fields?: InternalField<T>[];
|
|
197
|
+
[key: string]: any;
|
|
198
|
+
};
|
|
199
|
+
/** @internal */
|
|
200
|
+
helper: any;
|
|
201
|
+
select(fields: string | RawQueryFragment | (string | RawQueryFragment)[], distinct?: boolean): this;
|
|
202
|
+
addSelect(fields: string | string[]): this;
|
|
203
|
+
from<T extends object>(target: EntityName<T> | IQueryBuilder<T>, aliasName?: string): IQueryBuilder<T>;
|
|
204
|
+
insert(data: any): this;
|
|
205
|
+
update(data: any): this;
|
|
206
|
+
delete(cond?: FilterQuery<any>): this;
|
|
207
|
+
truncate(): this;
|
|
208
|
+
count(field?: string | string[], distinct?: boolean): this;
|
|
209
|
+
join(field: string, alias: string, cond?: FilterQuery<any>, type?: JoinType, path?: string): this;
|
|
210
|
+
innerJoin(field: string, alias: string, cond?: FilterQuery<any>): this;
|
|
211
|
+
leftJoin(field: string, alias: string, cond?: FilterQuery<any>): this;
|
|
212
|
+
joinAndSelect(field: any, alias: string, cond?: FilterQuery<any>): this;
|
|
213
|
+
leftJoinAndSelect(field: any, alias: string, cond?: FilterQuery<any>, fields?: string[]): this;
|
|
214
|
+
innerJoinAndSelect(field: any, alias: string, cond?: FilterQuery<any>, fields?: string[]): this;
|
|
215
|
+
withSubQuery(subQuery: RawQueryFragment | NativeQueryBuilder, alias: string): this;
|
|
216
|
+
where(
|
|
217
|
+
cond: FilterQuery<T> | string | RawQueryFragment | Dictionary,
|
|
218
|
+
operator?: keyof typeof GroupOperator | any[],
|
|
219
|
+
operator2?: keyof typeof GroupOperator,
|
|
220
|
+
): this;
|
|
221
|
+
andWhere(cond: FilterQuery<T> | string | RawQueryFragment | Dictionary, params?: any[]): this;
|
|
222
|
+
orWhere(cond: FilterQuery<T> | string | RawQueryFragment | Dictionary, params?: any[]): this;
|
|
223
|
+
orderBy(orderBy: QueryOrderMap<T>): this;
|
|
224
|
+
groupBy(fields: (string | keyof T) | (string | keyof T)[]): this;
|
|
225
|
+
having(cond?: FilterQuery<any> | string, params?: any[]): this;
|
|
226
|
+
getAliasForJoinPath(path: string, options?: ICriteriaNodeProcessOptions): string | undefined;
|
|
227
|
+
getJoinForPath(path?: string, options?: ICriteriaNodeProcessOptions): JoinOptions | undefined;
|
|
228
|
+
getNextAlias(entityName?: string | EntityName<T>): string;
|
|
229
|
+
clone(reset?: boolean | string[], preserve?: string[]): IQueryBuilder<T>;
|
|
230
|
+
setFlag(flag: QueryFlag): this;
|
|
231
|
+
unsetFlag(flag: QueryFlag): this;
|
|
232
|
+
hasFlag(flag: QueryFlag): boolean;
|
|
233
|
+
with(name: string, query: AnyQueryBuilder | NativeQueryBuilder | RawQueryFragment, options?: CteOptions): this;
|
|
234
|
+
withRecursive(
|
|
235
|
+
name: string,
|
|
236
|
+
query: AnyQueryBuilder | NativeQueryBuilder | RawQueryFragment,
|
|
237
|
+
options?: CteOptions,
|
|
238
|
+
): this;
|
|
239
|
+
scheduleFilterCheck(path: string): void;
|
|
240
|
+
withSchema(schema: string): this;
|
|
212
241
|
}
|
|
213
242
|
export interface ICriteriaNodeProcessOptions {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
243
|
+
alias?: string;
|
|
244
|
+
matchPopulateJoins?: boolean;
|
|
245
|
+
ignoreBranching?: boolean;
|
|
246
|
+
preferNoBranch?: boolean;
|
|
247
|
+
type?: 'orderBy' | 'having';
|
|
248
|
+
filter?: boolean;
|
|
249
|
+
parentPath?: string;
|
|
221
250
|
}
|
|
222
251
|
export interface ICriteriaNode<T extends object> {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
}): string;
|
|
238
|
-
getPivotPath(path: string): string;
|
|
252
|
+
readonly entityName: EntityName<T>;
|
|
253
|
+
readonly parent?: ICriteriaNode<T> | undefined;
|
|
254
|
+
readonly key?: string | symbol | undefined;
|
|
255
|
+
readonly strict?: boolean;
|
|
256
|
+
payload: any;
|
|
257
|
+
prop?: EntityProperty;
|
|
258
|
+
index?: number;
|
|
259
|
+
process(qb: IQueryBuilder<T>, options?: ICriteriaNodeProcessOptions): any;
|
|
260
|
+
shouldInline(payload: any): boolean;
|
|
261
|
+
willAutoJoin(qb: IQueryBuilder<T>, alias?: string, options?: ICriteriaNodeProcessOptions): boolean;
|
|
262
|
+
shouldRename(payload: any): boolean;
|
|
263
|
+
renameFieldToPK<T>(qb: IQueryBuilder<T>, ownerAlias?: string): string;
|
|
264
|
+
getPath(opts?: { addIndex?: boolean }): string;
|
|
265
|
+
getPivotPath(path: string): string;
|
|
239
266
|
}
|
|
240
267
|
export type MaybeReturnType<T> = T extends (...args: any[]) => infer R ? R : T;
|
|
241
|
-
export type InferEntityProperties<Schema> =
|
|
242
|
-
|
|
268
|
+
export type InferEntityProperties<Schema> =
|
|
269
|
+
Schema extends EntitySchemaWithMeta<any, any, any, any, infer Properties> ? Properties : never;
|
|
270
|
+
export type InferKyselyDB<
|
|
271
|
+
TEntities extends {
|
|
243
272
|
name: string;
|
|
244
|
-
},
|
|
273
|
+
},
|
|
274
|
+
TOptions extends MikroKyselyPluginOptions = {},
|
|
275
|
+
> = MapValueAsTable<MapTableName<TEntities, TOptions>, TOptions>;
|
|
245
276
|
export type InferDBFromKysely<TKysely extends Kysely<any>> = TKysely extends Kysely<infer TDB> ? TDB : never;
|
|
246
|
-
type PreferStringLiteral<TCandidate, TFallback> = [TCandidate] extends [never]
|
|
247
|
-
|
|
277
|
+
type PreferStringLiteral<TCandidate, TFallback> = [TCandidate] extends [never]
|
|
278
|
+
? TFallback
|
|
279
|
+
: string extends TCandidate
|
|
280
|
+
? TFallback
|
|
281
|
+
: TCandidate extends string
|
|
282
|
+
? TCandidate
|
|
283
|
+
: TFallback;
|
|
284
|
+
export type MapTableName<
|
|
285
|
+
T extends {
|
|
248
286
|
name: string;
|
|
249
287
|
tableName?: string;
|
|
250
|
-
},
|
|
251
|
-
|
|
288
|
+
},
|
|
289
|
+
TOptions extends MikroKyselyPluginOptions = {},
|
|
290
|
+
> = {
|
|
291
|
+
[P in T as TOptions['tableNamingStrategy'] extends 'entity'
|
|
292
|
+
? P['name']
|
|
293
|
+
: PreferStringLiteral<NonNullable<P['tableName']>, P['name']>]: P;
|
|
252
294
|
};
|
|
253
295
|
export type MapValueAsTable<TMap extends Record<string, any>, TOptions extends MikroKyselyPluginOptions = {}> = {
|
|
254
|
-
|
|
296
|
+
[K in keyof TMap as TransformName<
|
|
297
|
+
K,
|
|
298
|
+
TOptions['tableNamingStrategy'] extends 'entity' ? 'entity' : 'underscore'
|
|
299
|
+
>]: InferKyselyTable<TMap[K], TOptions>;
|
|
255
300
|
};
|
|
256
|
-
export type InferKyselyTable<
|
|
257
|
-
|
|
301
|
+
export type InferKyselyTable<
|
|
302
|
+
TSchema extends EntitySchemaWithMeta,
|
|
303
|
+
TOptions extends MikroKyselyPluginOptions = {},
|
|
304
|
+
> = ExcludeNever<{
|
|
305
|
+
-readonly [K in keyof InferEntityProperties<TSchema> as TransformColumnName<
|
|
306
|
+
K,
|
|
307
|
+
TOptions['columnNamingStrategy'] extends 'property' ? 'property' : 'underscore',
|
|
308
|
+
MaybeReturnType<InferEntityProperties<TSchema>[K]>
|
|
309
|
+
>]: InferColumnValue<
|
|
310
|
+
MaybeReturnType<InferEntityProperties<TSchema>[K]>,
|
|
311
|
+
TOptions['processOnCreateHooks'] extends true ? true : false
|
|
312
|
+
>;
|
|
258
313
|
}>;
|
|
259
|
-
type TransformName<TName, TNamingStrategy extends 'underscore' | 'entity'> = TNamingStrategy extends 'underscore'
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
314
|
+
type TransformName<TName, TNamingStrategy extends 'underscore' | 'entity'> = TNamingStrategy extends 'underscore'
|
|
315
|
+
? TName extends string
|
|
316
|
+
? SnakeCase<TName>
|
|
317
|
+
: TName
|
|
318
|
+
: TName;
|
|
319
|
+
type TransformColumnName<
|
|
320
|
+
TName,
|
|
321
|
+
TNamingStrategy extends 'underscore' | 'property',
|
|
322
|
+
TBuilder,
|
|
323
|
+
> = TNamingStrategy extends 'property'
|
|
324
|
+
? TName
|
|
325
|
+
: TBuilder extends {
|
|
326
|
+
'~options': {
|
|
327
|
+
fieldName: string;
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
? TBuilder['~options']['fieldName']
|
|
331
|
+
: TName extends string
|
|
332
|
+
? MaybeJoinColumnName<SnakeCase<TName>, TBuilder>
|
|
333
|
+
: never;
|
|
265
334
|
type MaybeJoinColumnName<TName extends string, TBuilder> = TBuilder extends {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
335
|
+
'~type'?: {
|
|
336
|
+
value: infer Value;
|
|
337
|
+
};
|
|
338
|
+
'~options': {
|
|
339
|
+
kind: 'm:1';
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
? PrimaryProperty<Value> extends string
|
|
343
|
+
? `${TName}_${SnakeCase<PrimaryProperty<Value>>}`
|
|
344
|
+
: never
|
|
345
|
+
: TBuilder extends {
|
|
346
|
+
'~type'?: {
|
|
347
|
+
value: infer Value;
|
|
348
|
+
};
|
|
349
|
+
'~options': {
|
|
350
|
+
kind: '1:1';
|
|
351
|
+
owner: true;
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
? PrimaryProperty<Value> extends string
|
|
355
|
+
? `${TName}_${SnakeCase<PrimaryProperty<Value>>}`
|
|
356
|
+
: never
|
|
357
|
+
: TName;
|
|
358
|
+
export type SnakeCase<TName extends string> = TName extends `${infer A}${infer B}${infer Rest}`
|
|
359
|
+
? IsUpperLetter<B> extends never
|
|
360
|
+
? `${Lowercase<A>}${SnakeCase<`${B}${Rest}`>}`
|
|
361
|
+
: IsLowerLetter<A> extends never
|
|
362
|
+
? `${Lowercase<A>}${SnakeCase<`${B}${Rest}`>}`
|
|
363
|
+
: `${Lowercase<A>}_${SnakeCase<`${B}${Rest}`>}`
|
|
364
|
+
: Lowercase<TName>;
|
|
282
365
|
type IsLowerLetter<C extends string> = C extends Lowercase<C> ? (C extends Uppercase<C> ? never : C) : never;
|
|
283
366
|
type IsUpperLetter<C extends string> = C extends Uppercase<C> ? (C extends Lowercase<C> ? never : C) : never;
|
|
284
367
|
type InferColumnValue<TBuilder, TProcessOnCreate extends boolean> = TBuilder extends {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
}
|
|
368
|
+
'~type'?: {
|
|
369
|
+
value: infer Value;
|
|
370
|
+
};
|
|
371
|
+
'~options': infer TOptions;
|
|
372
|
+
}
|
|
373
|
+
? MaybeNever<MaybeGenerated<MaybeJoinKey<Value, TOptions>, TOptions, TProcessOnCreate>, TOptions>
|
|
374
|
+
: never;
|
|
290
375
|
type MaybeGenerated<TValue, TOptions, TProcessOnCreate extends boolean> = TOptions extends {
|
|
291
|
-
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
}
|
|
376
|
+
nullable: true;
|
|
377
|
+
}
|
|
378
|
+
? TValue | null
|
|
379
|
+
: TOptions extends {
|
|
380
|
+
autoincrement: true;
|
|
381
|
+
}
|
|
382
|
+
? Generated<TValue>
|
|
383
|
+
: TOptions extends {
|
|
384
|
+
default: true;
|
|
385
|
+
}
|
|
386
|
+
? Generated<TValue>
|
|
387
|
+
: TOptions extends {
|
|
388
|
+
defaultRaw: true;
|
|
389
|
+
}
|
|
390
|
+
? Generated<TValue>
|
|
391
|
+
: TProcessOnCreate extends false
|
|
392
|
+
? TValue
|
|
393
|
+
: TOptions extends {
|
|
394
|
+
onCreate: Function;
|
|
395
|
+
}
|
|
396
|
+
? Generated<TValue>
|
|
397
|
+
: TValue;
|
|
301
398
|
type MaybeJoinKey<TValue, TOptions> = TOptions extends {
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
}
|
|
399
|
+
kind: 'm:1';
|
|
400
|
+
}
|
|
401
|
+
? UnwrapOpt<Primary<TValue>>
|
|
402
|
+
: TOptions extends {
|
|
403
|
+
kind: '1:1';
|
|
404
|
+
}
|
|
405
|
+
? TOptions extends {
|
|
406
|
+
owner: true;
|
|
407
|
+
}
|
|
408
|
+
? UnwrapOpt<Primary<TValue>>
|
|
409
|
+
: never
|
|
410
|
+
: TValue;
|
|
308
411
|
type UnwrapOpt<TValue> = TValue extends Opt<infer OriginalValue> ? OriginalValue : TValue;
|
|
309
|
-
type MaybeNever<TValue, TOptions> = TOptions extends
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
412
|
+
type MaybeNever<TValue, TOptions> = TOptions extends
|
|
413
|
+
| {
|
|
414
|
+
persist: false;
|
|
415
|
+
}
|
|
416
|
+
| {
|
|
417
|
+
kind: 'm:n' | '1:m';
|
|
418
|
+
}
|
|
419
|
+
? never
|
|
420
|
+
: TValue;
|
|
314
421
|
type ExcludeNever<TMap extends Record<string, any>> = {
|
|
315
|
-
|
|
422
|
+
[K in keyof TMap as TMap[K] extends never ? never : K]: TMap[K];
|
|
316
423
|
};
|
|
317
|
-
export type InferClassEntityDB<TEntities, TOptions extends MikroKyselyPluginOptions = {}> =
|
|
424
|
+
export type InferClassEntityDB<TEntities, TOptions extends MikroKyselyPluginOptions = {}> =
|
|
425
|
+
ClassEntityDBMap<TEntities, TOptions> extends infer R ? ([keyof R] extends [never] ? unknown : R) : never;
|
|
318
426
|
type ClassEntityDBMap<TEntities, TOptions extends MikroKyselyPluginOptions = {}> = {
|
|
319
|
-
|
|
427
|
+
[T in TEntities as ClassEntityTableName<T, TOptions>]: ClassEntityColumns<T>;
|
|
320
428
|
};
|
|
321
|
-
type ClassEntityTableName<T, TOptions extends MikroKyselyPluginOptions = {}> = T extends abstract new (
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
429
|
+
type ClassEntityTableName<T, TOptions extends MikroKyselyPluginOptions = {}> = T extends abstract new (
|
|
430
|
+
...args: any[]
|
|
431
|
+
) => infer Instance
|
|
432
|
+
? TransformName<InferEntityName<Instance>, TOptions['tableNamingStrategy'] extends 'entity' ? 'entity' : 'underscore'>
|
|
433
|
+
: never;
|
|
434
|
+
type ClassEntityColumns<T> = T extends abstract new (...args: any[]) => infer Instance
|
|
435
|
+
? {
|
|
436
|
+
[K in keyof Instance as IsClassEntityColumn<K, Instance[K]>]: Instance[K];
|
|
437
|
+
}
|
|
438
|
+
: never;
|
|
325
439
|
type IsClassEntityColumn<K, V> = K extends symbol ? never : NonNullable<V> extends Scalar ? K : never;
|
|
326
440
|
export {};
|