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