@mikro-orm/knex 7.0.0-dev.4 → 7.0.0-dev.41

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 (50) hide show
  1. package/AbstractSqlConnection.d.ts +8 -4
  2. package/AbstractSqlConnection.js +75 -31
  3. package/AbstractSqlDriver.d.ts +14 -9
  4. package/AbstractSqlDriver.js +273 -213
  5. package/AbstractSqlPlatform.js +3 -3
  6. package/PivotCollectionPersister.d.ts +3 -2
  7. package/PivotCollectionPersister.js +6 -2
  8. package/README.md +3 -2
  9. package/SqlEntityManager.d.ts +9 -2
  10. package/SqlEntityManager.js +2 -2
  11. package/dialects/mssql/MsSqlNativeQueryBuilder.d.ts +2 -0
  12. package/dialects/mssql/MsSqlNativeQueryBuilder.js +43 -2
  13. package/dialects/mysql/MySqlPlatform.js +2 -1
  14. package/dialects/postgresql/PostgreSqlTableCompiler.d.ts +1 -0
  15. package/dialects/postgresql/PostgreSqlTableCompiler.js +1 -0
  16. package/dialects/sqlite/BaseSqliteConnection.d.ts +1 -1
  17. package/dialects/sqlite/BaseSqliteConnection.js +8 -2
  18. package/dialects/sqlite/BaseSqlitePlatform.d.ts +0 -1
  19. package/dialects/sqlite/BaseSqlitePlatform.js +0 -4
  20. package/dialects/sqlite/SqliteSchemaHelper.js +1 -1
  21. package/index.d.ts +1 -1
  22. package/index.js +1 -1
  23. package/package.json +4 -4
  24. package/query/ArrayCriteriaNode.d.ts +1 -0
  25. package/query/ArrayCriteriaNode.js +3 -0
  26. package/query/CriteriaNode.d.ts +4 -2
  27. package/query/CriteriaNode.js +11 -6
  28. package/query/CriteriaNodeFactory.js +11 -6
  29. package/query/NativeQueryBuilder.js +1 -1
  30. package/query/ObjectCriteriaNode.d.ts +1 -0
  31. package/query/ObjectCriteriaNode.js +38 -7
  32. package/query/QueryBuilder.d.ts +67 -6
  33. package/query/QueryBuilder.js +195 -43
  34. package/query/QueryBuilderHelper.d.ts +1 -1
  35. package/query/QueryBuilderHelper.js +13 -6
  36. package/query/ScalarCriteriaNode.d.ts +3 -3
  37. package/query/ScalarCriteriaNode.js +7 -5
  38. package/query/index.d.ts +1 -0
  39. package/query/index.js +1 -0
  40. package/query/raw.d.ts +58 -0
  41. package/query/raw.js +72 -0
  42. package/schema/DatabaseSchema.js +25 -4
  43. package/schema/DatabaseTable.d.ts +5 -4
  44. package/schema/DatabaseTable.js +80 -34
  45. package/schema/SchemaComparator.js +2 -2
  46. package/schema/SchemaHelper.d.ts +2 -0
  47. package/schema/SchemaHelper.js +8 -4
  48. package/schema/SqlSchemaGenerator.d.ts +6 -1
  49. package/schema/SqlSchemaGenerator.js +22 -3
  50. package/typings.d.ts +86 -3
package/typings.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { DeferMode, CheckCallback, Dictionary, EntityProperty, GroupOperator, RawQueryFragment, QBFilterQuery, QueryOrderMap, Type, QueryFlag, AnyEntity, EntityName } from '@mikro-orm/core';
1
+ import type { Generated, Kysely } from 'kysely';
2
+ import type { DeferMode, CheckCallback, Dictionary, EntityProperty, GroupOperator, RawQueryFragment, QBFilterQuery, QueryOrderMap, Type, QueryFlag, AnyEntity, EntityName, EntitySchemaWithMeta, Primary, PrimaryProperty, Opt } from '@mikro-orm/core';
2
3
  import type { JoinType, QueryType } from './query/enums.js';
3
4
  import type { DatabaseSchema } from './schema/DatabaseSchema.js';
4
5
  import type { DatabaseTable } from './schema/DatabaseTable.js';
@@ -27,6 +28,7 @@ export interface JoinOptions {
27
28
  cond_?: Dictionary;
28
29
  subquery?: string;
29
30
  nested?: Set<JoinOptions>;
31
+ parent?: JoinOptions;
30
32
  }
31
33
  export interface Column {
32
34
  name: string;
@@ -74,7 +76,7 @@ export interface IndexDef {
74
76
  storageEngineIndexType?: 'hash' | 'btree';
75
77
  predicate?: string;
76
78
  }>;
77
- deferMode?: DeferMode;
79
+ deferMode?: DeferMode | `${DeferMode}`;
78
80
  }
79
81
  export interface CheckDef<T = unknown> {
80
82
  name: string;
@@ -163,17 +165,21 @@ export interface IQueryBuilder<T> {
163
165
  setFlag(flag: QueryFlag): this;
164
166
  unsetFlag(flag: QueryFlag): this;
165
167
  hasFlag(flag: QueryFlag): boolean;
168
+ scheduleFilterCheck(path: string): void;
166
169
  }
167
170
  export interface ICriteriaNodeProcessOptions {
168
171
  alias?: string;
169
172
  matchPopulateJoins?: boolean;
170
173
  ignoreBranching?: boolean;
171
174
  preferNoBranch?: boolean;
175
+ type?: 'orderBy';
176
+ filter?: boolean;
172
177
  }
173
178
  export interface ICriteriaNode<T extends object> {
174
179
  readonly entityName: string;
175
180
  readonly parent?: ICriteriaNode<T> | undefined;
176
181
  readonly key?: string | undefined;
182
+ readonly strict?: boolean;
177
183
  payload: any;
178
184
  prop?: EntityProperty;
179
185
  index?: number;
@@ -181,8 +187,85 @@ export interface ICriteriaNode<T extends object> {
181
187
  shouldInline(payload: any): boolean;
182
188
  willAutoJoin(qb: IQueryBuilder<T>, alias?: string, options?: ICriteriaNodeProcessOptions): boolean;
183
189
  shouldRename(payload: any): boolean;
184
- renameFieldToPK<T>(qb: IQueryBuilder<T>): string;
190
+ renameFieldToPK<T>(qb: IQueryBuilder<T>, ownerAlias?: string): string;
185
191
  getPath(addIndex?: boolean): string;
186
192
  getPivotPath(path: string): string;
187
193
  }
194
+ export type MaybeReturnType<T> = T extends (...args: any[]) => infer R ? R : T;
195
+ export type InferEntityProperties<Schema> = Schema extends EntitySchemaWithMeta<any, any, any, any, infer Properties> ? Properties : never;
196
+ export type InferKyselyDB<TEntities extends {
197
+ name: string;
198
+ }, TOptions = {}> = MapValueAsTable<MapByName<TEntities>, TOptions>;
199
+ export type InferDBFromKysely<TKysely extends Kysely<any>> = TKysely extends Kysely<infer TDB> ? TDB : never;
200
+ type PreferStringLiteral<TCandidate, TFallback> = [
201
+ TCandidate
202
+ ] extends [never] ? TFallback : string extends TCandidate ? TFallback : TCandidate extends string ? TCandidate : TFallback;
203
+ export type MapByName<T extends {
204
+ name: string;
205
+ tableName?: string;
206
+ }> = {
207
+ [P in T as PreferStringLiteral<NonNullable<P['tableName']>, P['name']>]: P;
208
+ };
209
+ export type MapValueAsTable<TMap extends Record<string, any>, TOptions = {}> = {
210
+ [K in keyof TMap as TransformName<K, 'underscore'>]: InferKyselyTable<TMap[K], 'underscore'>;
211
+ };
212
+ export type InferKyselyTable<TSchema extends EntitySchemaWithMeta, TNamingStrategy extends 'underscore' | 'entity' = 'underscore', TProcessOnCreate extends boolean = false> = ExcludeNever<{
213
+ -readonly [K in keyof InferEntityProperties<TSchema> as TransformColumnName<K, TNamingStrategy, MaybeReturnType<InferEntityProperties<TSchema>[K]>>]: InferColumnValue<MaybeReturnType<InferEntityProperties<TSchema>[K]>, TProcessOnCreate>;
214
+ }>;
215
+ type TransformName<TName, TNamingStrategy extends 'underscore' | 'entity'> = TNamingStrategy extends 'underscore' ? TName extends string ? SnakeCase<TName> : TName : TName;
216
+ type TransformColumnName<TName, TNamingStrategy extends 'underscore' | 'entity', TBuilder> = TNamingStrategy extends 'entity' ? TName : TBuilder extends {
217
+ '~options': {
218
+ fieldName: string;
219
+ };
220
+ } ? TBuilder['~options']['fieldName'] : TName extends string ? MaybeJoinColumnName<SnakeCase<TName>, TBuilder> : never;
221
+ type MaybeJoinColumnName<TName extends string, TBuilder> = TBuilder extends {
222
+ '~type'?: {
223
+ value: infer Value;
224
+ };
225
+ '~options': {
226
+ kind: 'm:1';
227
+ };
228
+ } ? PrimaryProperty<Value> extends string ? `${TName}_${SnakeCase<PrimaryProperty<Value>>}` : never : TBuilder extends {
229
+ '~type'?: {
230
+ value: infer Value;
231
+ };
232
+ '~options': {
233
+ kind: '1:1';
234
+ owner: true;
235
+ };
236
+ } ? PrimaryProperty<Value> extends string ? `${TName}_${SnakeCase<PrimaryProperty<Value>>}` : never : TName;
237
+ export type SnakeCase<TName extends string> = TName extends `${infer P1}${infer P2}` ? P2 extends Uncapitalize<P2> ? `${Uncapitalize<P1>}${SnakeCase<P2>}` : `${Uncapitalize<P1>}_${SnakeCase<Uncapitalize<P2>>}` : TName;
238
+ type InferColumnValue<TBuilder, TProcessOnCreate extends boolean> = TBuilder extends {
239
+ '~type'?: {
240
+ value: infer Value;
241
+ };
242
+ '~options': infer TOptions;
243
+ } ? MaybeNever<MaybeGenerated<MaybeJoinKey<Value, TOptions>, TOptions, TProcessOnCreate>, TOptions> : never;
244
+ type MaybeGenerated<TValue, TOptions, TProcessOnCreate extends boolean> = TOptions extends {
245
+ nullable: true;
246
+ } ? (TValue | null) : TOptions extends {
247
+ autoincrement: true;
248
+ } ? Generated<TValue> : TOptions extends {
249
+ default: true;
250
+ } ? Generated<TValue> : TOptions extends {
251
+ defaultRaw: true;
252
+ } ? Generated<TValue> : TProcessOnCreate extends false ? TValue : TOptions extends {
253
+ onCreate: Function;
254
+ } ? Generated<TValue> : TValue;
255
+ type MaybeJoinKey<TValue, TOptions> = TOptions extends {
256
+ kind: 'm:1';
257
+ } ? UnwrapOpt<Primary<TValue>> : TOptions extends {
258
+ kind: '1:1';
259
+ } ? TOptions extends {
260
+ owner: true;
261
+ } ? UnwrapOpt<Primary<TValue>> : never : TValue;
262
+ type UnwrapOpt<TValue> = TValue extends Opt<infer OriginalValue> ? OriginalValue : TValue;
263
+ type MaybeNever<TValue, TOptions> = TOptions extends {
264
+ persist: true;
265
+ } ? never : TOptions extends {
266
+ kind: 'm:n';
267
+ } ? never : TValue;
268
+ type ExcludeNever<TMap extends Record<string, any>> = {
269
+ [K in keyof TMap as TMap[K] extends never ? never : K]: TMap[K];
270
+ };
188
271
  export {};