@mikro-orm/core 7.0.4 → 7.0.5-dev.1

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 (206) hide show
  1. package/EntityManager.d.ts +583 -884
  2. package/EntityManager.js +1895 -1922
  3. package/MikroORM.d.ts +74 -103
  4. package/MikroORM.js +179 -178
  5. package/README.md +1 -1
  6. package/cache/CacheAdapter.d.ts +36 -36
  7. package/cache/FileCacheAdapter.d.ts +24 -30
  8. package/cache/FileCacheAdapter.js +78 -80
  9. package/cache/GeneratedCacheAdapter.d.ts +20 -18
  10. package/cache/GeneratedCacheAdapter.js +30 -30
  11. package/cache/MemoryCacheAdapter.d.ts +20 -18
  12. package/cache/MemoryCacheAdapter.js +36 -35
  13. package/cache/NullCacheAdapter.d.ts +16 -16
  14. package/cache/NullCacheAdapter.js +24 -24
  15. package/connections/Connection.d.ts +84 -95
  16. package/connections/Connection.js +168 -165
  17. package/drivers/DatabaseDriver.d.ts +80 -186
  18. package/drivers/DatabaseDriver.js +443 -450
  19. package/drivers/IDatabaseDriver.d.ts +301 -440
  20. package/entity/BaseEntity.d.ts +83 -120
  21. package/entity/BaseEntity.js +43 -43
  22. package/entity/Collection.d.ts +179 -212
  23. package/entity/Collection.js +721 -727
  24. package/entity/EntityAssigner.d.ts +77 -88
  25. package/entity/EntityAssigner.js +230 -231
  26. package/entity/EntityFactory.d.ts +54 -66
  27. package/entity/EntityFactory.js +383 -425
  28. package/entity/EntityHelper.d.ts +22 -34
  29. package/entity/EntityHelper.js +267 -280
  30. package/entity/EntityIdentifier.d.ts +4 -4
  31. package/entity/EntityIdentifier.js +10 -10
  32. package/entity/EntityLoader.d.ts +72 -98
  33. package/entity/EntityLoader.js +723 -753
  34. package/entity/EntityRepository.d.ts +201 -316
  35. package/entity/EntityRepository.js +213 -213
  36. package/entity/PolymorphicRef.d.ts +5 -5
  37. package/entity/PolymorphicRef.js +10 -10
  38. package/entity/Reference.d.ts +82 -126
  39. package/entity/Reference.js +274 -278
  40. package/entity/WrappedEntity.d.ts +72 -115
  41. package/entity/WrappedEntity.js +166 -168
  42. package/entity/defineEntity.d.ts +636 -1315
  43. package/entity/defineEntity.js +518 -527
  44. package/entity/utils.d.ts +3 -13
  45. package/entity/utils.js +73 -71
  46. package/entity/validators.js +43 -43
  47. package/entity/wrap.js +8 -8
  48. package/enums.d.ts +253 -258
  49. package/enums.js +252 -251
  50. package/errors.d.ts +72 -114
  51. package/errors.js +253 -350
  52. package/events/EventManager.d.ts +14 -26
  53. package/events/EventManager.js +77 -79
  54. package/events/EventSubscriber.d.ts +29 -29
  55. package/events/TransactionEventBroadcaster.d.ts +8 -15
  56. package/events/TransactionEventBroadcaster.js +14 -14
  57. package/exceptions.d.ts +40 -23
  58. package/exceptions.js +52 -35
  59. package/hydration/Hydrator.d.ts +17 -42
  60. package/hydration/Hydrator.js +43 -43
  61. package/hydration/ObjectHydrator.d.ts +17 -50
  62. package/hydration/ObjectHydrator.js +416 -481
  63. package/index.d.ts +2 -116
  64. package/index.js +1 -10
  65. package/logging/DefaultLogger.d.ts +32 -34
  66. package/logging/DefaultLogger.js +86 -86
  67. package/logging/Logger.d.ts +41 -41
  68. package/logging/SimpleLogger.d.ts +11 -13
  69. package/logging/SimpleLogger.js +22 -22
  70. package/logging/colors.d.ts +6 -6
  71. package/logging/colors.js +10 -11
  72. package/logging/inspect.js +7 -7
  73. package/metadata/EntitySchema.d.ts +127 -211
  74. package/metadata/EntitySchema.js +398 -397
  75. package/metadata/MetadataDiscovery.d.ts +114 -114
  76. package/metadata/MetadataDiscovery.js +1870 -1951
  77. package/metadata/MetadataProvider.d.ts +21 -24
  78. package/metadata/MetadataProvider.js +84 -82
  79. package/metadata/MetadataStorage.d.ts +32 -38
  80. package/metadata/MetadataStorage.js +118 -118
  81. package/metadata/MetadataValidator.d.ts +39 -39
  82. package/metadata/MetadataValidator.js +338 -381
  83. package/metadata/discover-entities.d.ts +2 -5
  84. package/metadata/discover-entities.js +37 -35
  85. package/metadata/types.d.ts +531 -615
  86. package/naming-strategy/AbstractNamingStrategy.d.ts +39 -54
  87. package/naming-strategy/AbstractNamingStrategy.js +85 -90
  88. package/naming-strategy/EntityCaseNamingStrategy.d.ts +6 -6
  89. package/naming-strategy/EntityCaseNamingStrategy.js +22 -22
  90. package/naming-strategy/MongoNamingStrategy.d.ts +6 -6
  91. package/naming-strategy/MongoNamingStrategy.js +18 -18
  92. package/naming-strategy/NamingStrategy.d.ts +99 -109
  93. package/naming-strategy/UnderscoreNamingStrategy.d.ts +7 -7
  94. package/naming-strategy/UnderscoreNamingStrategy.js +21 -21
  95. package/not-supported.js +4 -7
  96. package/package.json +1 -1
  97. package/platforms/ExceptionConverter.d.ts +1 -1
  98. package/platforms/ExceptionConverter.js +4 -4
  99. package/platforms/Platform.d.ts +301 -310
  100. package/platforms/Platform.js +640 -663
  101. package/serialization/EntitySerializer.d.ts +26 -49
  102. package/serialization/EntitySerializer.js +218 -224
  103. package/serialization/EntityTransformer.d.ts +6 -10
  104. package/serialization/EntityTransformer.js +217 -219
  105. package/serialization/SerializationContext.d.ts +23 -27
  106. package/serialization/SerializationContext.js +105 -105
  107. package/types/ArrayType.d.ts +8 -8
  108. package/types/ArrayType.js +33 -33
  109. package/types/BigIntType.d.ts +10 -17
  110. package/types/BigIntType.js +37 -37
  111. package/types/BlobType.d.ts +3 -3
  112. package/types/BlobType.js +13 -13
  113. package/types/BooleanType.d.ts +4 -4
  114. package/types/BooleanType.js +12 -12
  115. package/types/CharacterType.d.ts +2 -2
  116. package/types/CharacterType.js +6 -6
  117. package/types/DateTimeType.d.ts +5 -5
  118. package/types/DateTimeType.js +15 -15
  119. package/types/DateType.d.ts +5 -5
  120. package/types/DateType.js +15 -15
  121. package/types/DecimalType.d.ts +7 -7
  122. package/types/DecimalType.js +26 -26
  123. package/types/DoubleType.d.ts +3 -3
  124. package/types/DoubleType.js +12 -12
  125. package/types/EnumArrayType.d.ts +5 -5
  126. package/types/EnumArrayType.js +24 -24
  127. package/types/EnumType.d.ts +3 -3
  128. package/types/EnumType.js +11 -11
  129. package/types/FloatType.d.ts +3 -3
  130. package/types/FloatType.js +9 -9
  131. package/types/IntegerType.d.ts +3 -3
  132. package/types/IntegerType.js +9 -9
  133. package/types/IntervalType.d.ts +4 -4
  134. package/types/IntervalType.js +12 -12
  135. package/types/JsonType.d.ts +8 -8
  136. package/types/JsonType.js +32 -32
  137. package/types/MediumIntType.d.ts +1 -1
  138. package/types/MediumIntType.js +3 -3
  139. package/types/SmallIntType.d.ts +3 -3
  140. package/types/SmallIntType.js +9 -9
  141. package/types/StringType.d.ts +4 -4
  142. package/types/StringType.js +12 -12
  143. package/types/TextType.d.ts +3 -3
  144. package/types/TextType.js +9 -9
  145. package/types/TimeType.d.ts +5 -5
  146. package/types/TimeType.js +17 -17
  147. package/types/TinyIntType.d.ts +3 -3
  148. package/types/TinyIntType.js +10 -10
  149. package/types/Type.d.ts +79 -83
  150. package/types/Type.js +82 -82
  151. package/types/Uint8ArrayType.d.ts +4 -4
  152. package/types/Uint8ArrayType.js +21 -21
  153. package/types/UnknownType.d.ts +4 -4
  154. package/types/UnknownType.js +12 -12
  155. package/types/UuidType.d.ts +5 -5
  156. package/types/UuidType.js +19 -19
  157. package/types/index.d.ts +49 -75
  158. package/types/index.js +26 -52
  159. package/typings.d.ts +737 -1250
  160. package/typings.js +231 -244
  161. package/unit-of-work/ChangeSet.d.ts +26 -26
  162. package/unit-of-work/ChangeSet.js +56 -56
  163. package/unit-of-work/ChangeSetComputer.d.ts +12 -12
  164. package/unit-of-work/ChangeSetComputer.js +170 -178
  165. package/unit-of-work/ChangeSetPersister.d.ts +44 -63
  166. package/unit-of-work/ChangeSetPersister.js +421 -442
  167. package/unit-of-work/CommitOrderCalculator.d.ts +40 -40
  168. package/unit-of-work/CommitOrderCalculator.js +88 -89
  169. package/unit-of-work/IdentityMap.d.ts +31 -31
  170. package/unit-of-work/IdentityMap.js +105 -105
  171. package/unit-of-work/UnitOfWork.d.ts +141 -181
  172. package/unit-of-work/UnitOfWork.js +1183 -1200
  173. package/utils/AbstractMigrator.d.ts +91 -111
  174. package/utils/AbstractMigrator.js +275 -275
  175. package/utils/AbstractSchemaGenerator.d.ts +34 -43
  176. package/utils/AbstractSchemaGenerator.js +122 -121
  177. package/utils/AsyncContext.d.ts +3 -3
  178. package/utils/AsyncContext.js +35 -34
  179. package/utils/Configuration.d.ts +808 -852
  180. package/utils/Configuration.js +344 -359
  181. package/utils/Cursor.d.ts +22 -40
  182. package/utils/Cursor.js +127 -135
  183. package/utils/DataloaderUtils.d.ts +43 -58
  184. package/utils/DataloaderUtils.js +198 -203
  185. package/utils/EntityComparator.d.ts +81 -98
  186. package/utils/EntityComparator.js +732 -828
  187. package/utils/NullHighlighter.d.ts +1 -1
  188. package/utils/NullHighlighter.js +3 -3
  189. package/utils/QueryHelper.d.ts +51 -79
  190. package/utils/QueryHelper.js +361 -372
  191. package/utils/RawQueryFragment.d.ts +34 -50
  192. package/utils/RawQueryFragment.js +105 -107
  193. package/utils/RequestContext.d.ts +32 -32
  194. package/utils/RequestContext.js +53 -52
  195. package/utils/TransactionContext.d.ts +16 -16
  196. package/utils/TransactionContext.js +27 -27
  197. package/utils/TransactionManager.d.ts +58 -58
  198. package/utils/TransactionManager.js +197 -199
  199. package/utils/Utils.d.ts +145 -204
  200. package/utils/Utils.js +812 -812
  201. package/utils/clone.js +113 -104
  202. package/utils/env-vars.js +88 -90
  203. package/utils/fs-utils.d.ts +15 -15
  204. package/utils/fs-utils.js +181 -180
  205. package/utils/upsert-utils.d.ts +5 -20
  206. package/utils/upsert-utils.js +116 -114
@@ -1,33 +1,6 @@
1
- import type {
2
- ConnectionType,
3
- Constructor,
4
- EntityData,
5
- EntityMetadata,
6
- EntityProperty,
7
- FilterQuery,
8
- Primary,
9
- Dictionary,
10
- IPrimaryKey,
11
- PopulateOptions,
12
- EntityDictionary,
13
- AutoPath,
14
- ObjectQuery,
15
- FilterObject,
16
- Populate,
17
- EntityName,
18
- PopulateHintOptions,
19
- Prefixes,
20
- } from '../typings.js';
1
+ import type { ConnectionType, Constructor, EntityData, EntityMetadata, EntityProperty, FilterQuery, Primary, Dictionary, IPrimaryKey, PopulateOptions, EntityDictionary, AutoPath, ObjectQuery, FilterObject, Populate, EntityName, PopulateHintOptions, Prefixes } from '../typings.js';
21
2
  import type { Connection, QueryResult, Transaction } from '../connections/Connection.js';
22
- import type {
23
- FlushMode,
24
- LockMode,
25
- QueryOrderMap,
26
- QueryFlag,
27
- LoadStrategy,
28
- PopulateHint,
29
- PopulatePath,
30
- } from '../enums.js';
3
+ import type { FlushMode, LockMode, QueryOrderMap, QueryFlag, LoadStrategy, PopulateHint, PopulatePath } from '../enums.js';
31
4
  import type { Platform } from '../platforms/Platform.js';
32
5
  import type { MetadataStorage } from '../metadata/MetadataStorage.js';
33
6
  import type { Collection } from '../entity/Collection.js';
@@ -41,471 +14,359 @@ import type { Raw } from '../utils/RawQueryFragment.js';
41
14
  export declare const EntityManagerType: unique symbol;
42
15
  /** Interface defining the contract for all database drivers. */
43
16
  export interface IDatabaseDriver<C extends Connection = Connection> {
44
- [EntityManagerType]: EntityManager<this>;
45
- readonly config: Configuration;
46
- /** Creates a new EntityManager instance for this driver. */
47
- createEntityManager(useContext?: boolean): this[typeof EntityManagerType];
48
- /** Opens a connection to the database. */
49
- connect(options?: { skipOnConnect?: boolean }): Promise<C>;
50
- /** Closes the database connection. */
51
- close(force?: boolean): Promise<void>;
52
- /** Closes and re-establishes the database connection. */
53
- reconnect(options?: { skipOnConnect?: boolean }): Promise<C>;
54
- /** Returns the underlying database connection (write or read replica). */
55
- getConnection(type?: ConnectionType): C;
56
- /**
57
- * Finds selection of entities
58
- */
59
- find<T extends object, P extends string = never, F extends string = never, E extends string = never>(
60
- entityName: EntityName<T>,
61
- where: FilterQuery<T>,
62
- options?: FindOptions<T, P, F, E>,
63
- ): Promise<EntityData<T>[]>;
64
- /**
65
- * Finds single entity (table row, document)
66
- */
67
- findOne<T extends object, P extends string = never, F extends string = never, E extends string = never>(
68
- entityName: EntityName<T>,
69
- where: FilterQuery<T>,
70
- options?: FindOneOptions<T, P, F, E>,
71
- ): Promise<EntityData<T> | null>;
72
- /** Finds entities backed by a virtual (expression-based) definition. */
73
- findVirtual<T extends object>(
74
- entityName: EntityName<T>,
75
- where: FilterQuery<T>,
76
- options: FindOptions<T, any, any, any>,
77
- ): Promise<EntityData<T>[]>;
78
- /** Returns an async iterator that streams query results one entity at a time. */
79
- stream<T extends object>(
80
- entityName: EntityName<T>,
81
- where: FilterQuery<T>,
82
- options: StreamOptions<T>,
83
- ): AsyncIterableIterator<T>;
84
- /** Inserts a single row into the database. */
85
- nativeInsert<T extends object>(
86
- entityName: EntityName<T>,
87
- data: EntityDictionary<T>,
88
- options?: NativeInsertUpdateOptions<T>,
89
- ): Promise<QueryResult<T>>;
90
- /** Inserts multiple rows into the database in a single batch operation. */
91
- nativeInsertMany<T extends object>(
92
- entityName: EntityName<T>,
93
- data: EntityDictionary<T>[],
94
- options?: NativeInsertUpdateManyOptions<T>,
95
- transform?: (sql: string) => string,
96
- ): Promise<QueryResult<T>>;
97
- /** Updates rows matching the given condition. */
98
- nativeUpdate<T extends object>(
99
- entityName: EntityName<T>,
100
- where: FilterQuery<T>,
101
- data: EntityDictionary<T>,
102
- options?: NativeInsertUpdateOptions<T>,
103
- ): Promise<QueryResult<T>>;
104
- /** Updates multiple rows with different payloads in a single batch operation. */
105
- nativeUpdateMany<T extends object>(
106
- entityName: EntityName<T>,
107
- where: FilterQuery<T>[],
108
- data: EntityDictionary<T>[],
109
- options?: NativeInsertUpdateManyOptions<T>,
110
- ): Promise<QueryResult<T>>;
111
- /** Deletes rows matching the given condition. */
112
- nativeDelete<T extends object>(
113
- entityName: EntityName<T>,
114
- where: FilterQuery<T>,
115
- options?: NativeDeleteOptions<T>,
116
- ): Promise<QueryResult<T>>;
117
- /** Persists changes to M:N collections (inserts/deletes pivot table rows). */
118
- syncCollections<T extends object, O extends object>(
119
- collections: Iterable<Collection<T, O>>,
120
- options?: DriverMethodOptions,
121
- ): Promise<void>;
122
- /** Counts entities matching the given condition. */
123
- count<T extends object, P extends string = never>(
124
- entityName: EntityName<T>,
125
- where: FilterQuery<T>,
126
- options?: CountOptions<T, P>,
127
- ): Promise<number>;
128
- /** Executes a MongoDB aggregation pipeline (MongoDB driver only). */
129
- aggregate(entityName: EntityName, pipeline: any[]): Promise<any[]>;
130
- /** Maps raw database result to entity data, converting column names to property names. */
131
- mapResult<T extends object>(
132
- result: EntityDictionary<T>,
133
- meta: EntityMetadata<T>,
134
- populate?: PopulateOptions<T>[],
135
- ): EntityData<T> | null;
136
- /**
137
- * When driver uses pivot tables for M:N, this method will load identifiers for given collections from them
138
- */
139
- loadFromPivotTable<T extends object, O extends object>(
140
- prop: EntityProperty,
141
- owners: Primary<O>[][],
142
- where?: FilterQuery<T>,
143
- orderBy?: OrderDefinition<T>,
144
- ctx?: Transaction,
145
- options?: FindOptions<T, any, any, any>,
146
- pivotJoin?: boolean,
147
- ): Promise<Dictionary<T[]>>;
148
- /** Returns the database platform abstraction for this driver. */
149
- getPlatform(): Platform;
150
- /** Sets the metadata storage used by this driver. */
151
- setMetadata(metadata: MetadataStorage): void;
152
- /** Returns the metadata storage used by this driver. */
153
- getMetadata(): MetadataStorage;
154
- /**
155
- * Returns name of the underlying database dependencies (e.g. `mongodb` or `mysql2`)
156
- * for SQL drivers it also returns `knex` in the array as connectors are not used directly there
157
- */
158
- getDependencies(): string[];
159
- /** Acquires a pessimistic lock on the given entity. */
160
- lockPessimistic<T extends object>(entity: T, options: LockOptions): Promise<void>;
161
- /**
162
- * Converts native db errors to standardized driver exceptions
163
- */
164
- convertException(exception: Error): DriverException;
165
- /**
166
- * @internal
167
- */
168
- getSchemaName(
169
- meta?: EntityMetadata,
170
- options?: {
171
- schema?: string;
172
- parentSchema?: string;
173
- },
174
- ): string | undefined;
175
- /**
176
- * @internal
177
- */
178
- getORMClass(): Constructor<MikroORM>;
17
+ [EntityManagerType]: EntityManager<this>;
18
+ readonly config: Configuration;
19
+ /** Creates a new EntityManager instance for this driver. */
20
+ createEntityManager(useContext?: boolean): this[typeof EntityManagerType];
21
+ /** Opens a connection to the database. */
22
+ connect(options?: {
23
+ skipOnConnect?: boolean;
24
+ }): Promise<C>;
25
+ /** Closes the database connection. */
26
+ close(force?: boolean): Promise<void>;
27
+ /** Closes and re-establishes the database connection. */
28
+ reconnect(options?: {
29
+ skipOnConnect?: boolean;
30
+ }): Promise<C>;
31
+ /** Returns the underlying database connection (write or read replica). */
32
+ getConnection(type?: ConnectionType): C;
33
+ /**
34
+ * Finds selection of entities
35
+ */
36
+ find<T extends object, P extends string = never, F extends string = never, E extends string = never>(entityName: EntityName<T>, where: FilterQuery<T>, options?: FindOptions<T, P, F, E>): Promise<EntityData<T>[]>;
37
+ /**
38
+ * Finds single entity (table row, document)
39
+ */
40
+ findOne<T extends object, P extends string = never, F extends string = never, E extends string = never>(entityName: EntityName<T>, where: FilterQuery<T>, options?: FindOneOptions<T, P, F, E>): Promise<EntityData<T> | null>;
41
+ /** Finds entities backed by a virtual (expression-based) definition. */
42
+ findVirtual<T extends object>(entityName: EntityName<T>, where: FilterQuery<T>, options: FindOptions<T, any, any, any>): Promise<EntityData<T>[]>;
43
+ /** Returns an async iterator that streams query results one entity at a time. */
44
+ stream<T extends object>(entityName: EntityName<T>, where: FilterQuery<T>, options: StreamOptions<T>): AsyncIterableIterator<T>;
45
+ /** Inserts a single row into the database. */
46
+ nativeInsert<T extends object>(entityName: EntityName<T>, data: EntityDictionary<T>, options?: NativeInsertUpdateOptions<T>): Promise<QueryResult<T>>;
47
+ /** Inserts multiple rows into the database in a single batch operation. */
48
+ nativeInsertMany<T extends object>(entityName: EntityName<T>, data: EntityDictionary<T>[], options?: NativeInsertUpdateManyOptions<T>, transform?: (sql: string) => string): Promise<QueryResult<T>>;
49
+ /** Updates rows matching the given condition. */
50
+ nativeUpdate<T extends object>(entityName: EntityName<T>, where: FilterQuery<T>, data: EntityDictionary<T>, options?: NativeInsertUpdateOptions<T>): Promise<QueryResult<T>>;
51
+ /** Updates multiple rows with different payloads in a single batch operation. */
52
+ nativeUpdateMany<T extends object>(entityName: EntityName<T>, where: FilterQuery<T>[], data: EntityDictionary<T>[], options?: NativeInsertUpdateManyOptions<T>): Promise<QueryResult<T>>;
53
+ /** Deletes rows matching the given condition. */
54
+ nativeDelete<T extends object>(entityName: EntityName<T>, where: FilterQuery<T>, options?: NativeDeleteOptions<T>): Promise<QueryResult<T>>;
55
+ /** Persists changes to M:N collections (inserts/deletes pivot table rows). */
56
+ syncCollections<T extends object, O extends object>(collections: Iterable<Collection<T, O>>, options?: DriverMethodOptions): Promise<void>;
57
+ /** Counts entities matching the given condition. */
58
+ count<T extends object, P extends string = never>(entityName: EntityName<T>, where: FilterQuery<T>, options?: CountOptions<T, P>): Promise<number>;
59
+ /** Executes a MongoDB aggregation pipeline (MongoDB driver only). */
60
+ aggregate(entityName: EntityName, pipeline: any[]): Promise<any[]>;
61
+ /** Maps raw database result to entity data, converting column names to property names. */
62
+ mapResult<T extends object>(result: EntityDictionary<T>, meta: EntityMetadata<T>, populate?: PopulateOptions<T>[]): EntityData<T> | null;
63
+ /**
64
+ * When driver uses pivot tables for M:N, this method will load identifiers for given collections from them
65
+ */
66
+ loadFromPivotTable<T extends object, O extends object>(prop: EntityProperty, owners: Primary<O>[][], where?: FilterQuery<T>, orderBy?: OrderDefinition<T>, ctx?: Transaction, options?: FindOptions<T, any, any, any>, pivotJoin?: boolean): Promise<Dictionary<T[]>>;
67
+ /** Returns the database platform abstraction for this driver. */
68
+ getPlatform(): Platform;
69
+ /** Sets the metadata storage used by this driver. */
70
+ setMetadata(metadata: MetadataStorage): void;
71
+ /** Returns the metadata storage used by this driver. */
72
+ getMetadata(): MetadataStorage;
73
+ /**
74
+ * Returns name of the underlying database dependencies (e.g. `mongodb` or `mysql2`)
75
+ * for SQL drivers it also returns `knex` in the array as connectors are not used directly there
76
+ */
77
+ getDependencies(): string[];
78
+ /** Acquires a pessimistic lock on the given entity. */
79
+ lockPessimistic<T extends object>(entity: T, options: LockOptions): Promise<void>;
80
+ /**
81
+ * Converts native db errors to standardized driver exceptions
82
+ */
83
+ convertException(exception: Error): DriverException;
84
+ /**
85
+ * @internal
86
+ */
87
+ getSchemaName(meta?: EntityMetadata, options?: {
88
+ schema?: string;
89
+ parentSchema?: string;
90
+ }): string | undefined;
91
+ /**
92
+ * @internal
93
+ */
94
+ getORMClass(): Constructor<MikroORM>;
179
95
  }
180
96
  /** Represents a field selector for entity queries (property name or wildcard). */
181
- export type EntityField<T, P extends string = PopulatePath.ALL> =
182
- | keyof T
183
- | PopulatePath.ALL
184
- | AutoPath<T, P, `${PopulatePath.ALL}`>;
97
+ export type EntityField<T, P extends string = PopulatePath.ALL> = keyof T | PopulatePath.ALL | AutoPath<T, P, `${PopulatePath.ALL}`>;
185
98
  /** Defines the ordering for query results, either a single order map or an array of them. */
186
- export type OrderDefinition<T> =
187
- | (QueryOrderMap<T> & {
188
- 0?: never;
189
- })
190
- | QueryOrderMap<T>[];
99
+ export type OrderDefinition<T> = (QueryOrderMap<T> & {
100
+ 0?: never;
101
+ }) | QueryOrderMap<T>[];
191
102
  /** Options for `em.findAll()`, extends FindOptions with an optional `where` clause. */
192
- export interface FindAllOptions<
193
- T,
194
- P extends string = never,
195
- F extends string = never,
196
- E extends string = never,
197
- > extends FindOptions<T, P, F, E> {
198
- where?: FilterQuery<T>;
103
+ export interface FindAllOptions<T, P extends string = never, F extends string = never, E extends string = never> extends FindOptions<T, P, F, E> {
104
+ where?: FilterQuery<T>;
199
105
  }
200
106
  /** Options for streaming query results via `em.stream()`. */
201
- export interface StreamOptions<
202
- Entity,
203
- Populate extends string = never,
204
- Fields extends string = never,
205
- Exclude extends string = never,
206
- > extends Omit<
207
- FindAllOptions<Entity, Populate, Fields, Exclude>,
208
- 'cache' | 'before' | 'after' | 'first' | 'last' | 'overfetch' | 'strategy'
209
- > {
210
- /**
211
- * When populating to-many relations, the ORM streams fully merged entities instead of yielding every row.
212
- * You can opt out of this behavior by specifying `mergeResults: false`. This will yield every row from
213
- * the SQL result, but still mapped to entities, meaning that to-many collections will contain at most
214
- * a single item, and you will get duplicate root entities when they have multiple items in the populated
215
- * collection.
216
- *
217
- * @default true
218
- */
219
- mergeResults?: boolean;
107
+ export interface StreamOptions<Entity, Populate extends string = never, Fields extends string = never, Exclude extends string = never> extends Omit<FindAllOptions<Entity, Populate, Fields, Exclude>, 'cache' | 'before' | 'after' | 'first' | 'last' | 'overfetch' | 'strategy'> {
108
+ /**
109
+ * When populating to-many relations, the ORM streams fully merged entities instead of yielding every row.
110
+ * You can opt out of this behavior by specifying `mergeResults: false`. This will yield every row from
111
+ * the SQL result, but still mapped to entities, meaning that to-many collections will contain at most
112
+ * a single item, and you will get duplicate root entities when they have multiple items in the populated
113
+ * collection.
114
+ *
115
+ * @default true
116
+ */
117
+ mergeResults?: boolean;
220
118
  }
221
119
  /** Configuration for enabling/disabling named filters on a query. */
222
120
  export type FilterOptions = Dictionary<boolean | Dictionary> | string[] | boolean;
223
121
  /** Specifies which relations to populate and which fields to select or exclude. */
224
- export interface LoadHint<
225
- Entity,
226
- Hint extends string = never,
227
- Fields extends string = never,
228
- Excludes extends string = never,
229
- > {
230
- populate?: Populate<Entity, Hint>;
231
- fields?: readonly AutoPath<Entity, Fields, `${PopulatePath.ALL}`>[];
232
- exclude?: readonly AutoPath<Entity, Excludes>[];
122
+ export interface LoadHint<Entity, Hint extends string = never, Fields extends string = never, Excludes extends string = never> {
123
+ populate?: Populate<Entity, Hint>;
124
+ fields?: readonly AutoPath<Entity, Fields, `${PopulatePath.ALL}`>[];
125
+ exclude?: readonly AutoPath<Entity, Excludes>[];
233
126
  }
234
127
  /** Options for `em.find()` queries, including population, ordering, pagination, and locking. */
235
- export interface FindOptions<
236
- Entity,
237
- Hint extends string = never,
238
- Fields extends string = never,
239
- Excludes extends string = never,
240
- > extends LoadHint<Entity, Hint, Fields, Excludes> {
241
- /**
242
- * Where condition for populated relations. This will have no effect on the root entity.
243
- * With `select-in` strategy, this is applied only to the populate queries.
244
- * With `joined` strategy, those are applied as `join on` conditions.
245
- * When you use a nested condition on a to-many relation, it will produce a nested inner join,
246
- * discarding the collection items based on the child condition.
247
- */
248
- populateWhere?: ObjectQuery<Entity> | PopulateHint | `${PopulateHint}`;
249
- /**
250
- * Filter condition for populated relations. This is similar to `populateWhere`, but will produce a `left join`
251
- * when nesting the condition. This is used for implementation of joined filters.
252
- */
253
- populateFilter?: ObjectQuery<Entity>;
254
- /**
255
- * Index-friendly alternative to `$or` for conditions that span joined relations.
256
- * Each array element becomes an independent branch combined via `UNION ALL` subquery:
257
- * `WHERE pk IN (branch_1 UNION ALL branch_2 ... branch_N)`.
258
- * The database plans each branch independently, enabling per-table index usage
259
- * (e.g. GIN trigram indexes for fuzzy search across related entities).
260
- * sql only
261
- */
262
- unionWhere?: ObjectQuery<Entity>[];
263
- /**
264
- * Strategy for combining `unionWhere` branches.
265
- * - `'union-all'` (default) skips deduplication, faster for most use cases.
266
- * - `'union'` — deduplicates rows between branches; useful when branch overlap is very high.
267
- * sql only
268
- */
269
- unionWhereStrategy?: 'union-all' | 'union';
270
- /** Used for ordering of the populate queries. If not specified, the value of `options.orderBy` is used. */
271
- populateOrderBy?: OrderDefinition<Entity>;
272
- /** Per-relation overrides for populate loading behavior. Keys are populate paths (same as used in `populate`). */
273
- populateHints?: [Hint] extends [never]
274
- ? never
275
- : {
128
+ export interface FindOptions<Entity, Hint extends string = never, Fields extends string = never, Excludes extends string = never> extends LoadHint<Entity, Hint, Fields, Excludes> {
129
+ /**
130
+ * Where condition for populated relations. This will have no effect on the root entity.
131
+ * With `select-in` strategy, this is applied only to the populate queries.
132
+ * With `joined` strategy, those are applied as `join on` conditions.
133
+ * When you use a nested condition on a to-many relation, it will produce a nested inner join,
134
+ * discarding the collection items based on the child condition.
135
+ */
136
+ populateWhere?: ObjectQuery<Entity> | PopulateHint | `${PopulateHint}`;
137
+ /**
138
+ * Filter condition for populated relations. This is similar to `populateWhere`, but will produce a `left join`
139
+ * when nesting the condition. This is used for implementation of joined filters.
140
+ */
141
+ populateFilter?: ObjectQuery<Entity>;
142
+ /**
143
+ * Index-friendly alternative to `$or` for conditions that span joined relations.
144
+ * Each array element becomes an independent branch combined via `UNION ALL` subquery:
145
+ * `WHERE pk IN (branch_1 UNION ALL branch_2 ... branch_N)`.
146
+ * The database plans each branch independently, enabling per-table index usage
147
+ * (e.g. GIN trigram indexes for fuzzy search across related entities).
148
+ * sql only
149
+ */
150
+ unionWhere?: ObjectQuery<Entity>[];
151
+ /**
152
+ * Strategy for combining `unionWhere` branches.
153
+ * - `'union-all'` (default) — skips deduplication, faster for most use cases.
154
+ * - `'union'` — deduplicates rows between branches; useful when branch overlap is very high.
155
+ * sql only
156
+ */
157
+ unionWhereStrategy?: 'union-all' | 'union';
158
+ /** Used for ordering of the populate queries. If not specified, the value of `options.orderBy` is used. */
159
+ populateOrderBy?: OrderDefinition<Entity>;
160
+ /** Per-relation overrides for populate loading behavior. Keys are populate paths (same as used in `populate`). */
161
+ populateHints?: [Hint] extends [never] ? never : {
276
162
  [K in Prefixes<Hint>]?: PopulateHintOptions;
277
- };
278
- /** Ordering of the results.Can be an object or array of objects, keys are property names, values are ordering (asc/desc) */
279
- orderBy?: OrderDefinition<Entity>;
280
- /** Control result caching for this query. Result cache is by default disabled, not to be confused with the identity map. */
281
- cache?: boolean | number | [string, number];
282
- /**
283
- * Limit the number of returned results. If you try to use limit/offset on a query that joins a to-many relation, pagination mechanism
284
- * will be triggered, resulting in a subquery condition, to apply this limit only to the root entities
285
- * instead of the cartesian product you get from a database in this case.
286
- */
287
- limit?: number;
288
- /**
289
- * Sets the offset. If you try to use limit/offset on a query that joins a to-many relation, pagination mechanism
290
- * will be triggered, resulting in a subquery condition, to apply this limit only to the root entities
291
- * instead of the cartesian product you get from a database in this case.
292
- */
293
- offset?: number;
294
- /** Fetch items `before` this cursor. */
295
- before?:
296
- | string
297
- | {
163
+ };
164
+ /** Ordering of the results.Can be an object or array of objects, keys are property names, values are ordering (asc/desc) */
165
+ orderBy?: OrderDefinition<Entity>;
166
+ /** Control result caching for this query. Result cache is by default disabled, not to be confused with the identity map. */
167
+ cache?: boolean | number | [string, number];
168
+ /**
169
+ * Limit the number of returned results. If you try to use limit/offset on a query that joins a to-many relation, pagination mechanism
170
+ * will be triggered, resulting in a subquery condition, to apply this limit only to the root entities
171
+ * instead of the cartesian product you get from a database in this case.
172
+ */
173
+ limit?: number;
174
+ /**
175
+ * Sets the offset. If you try to use limit/offset on a query that joins a to-many relation, pagination mechanism
176
+ * will be triggered, resulting in a subquery condition, to apply this limit only to the root entities
177
+ * instead of the cartesian product you get from a database in this case.
178
+ */
179
+ offset?: number;
180
+ /** Fetch items `before` this cursor. */
181
+ before?: string | {
298
182
  startCursor: string | null;
299
- }
300
- | FilterObject<Entity>;
301
- /** Fetch items `after` this cursor. */
302
- after?:
303
- | string
304
- | {
183
+ } | FilterObject<Entity>;
184
+ /** Fetch items `after` this cursor. */
185
+ after?: string | {
305
186
  endCursor: string | null;
306
- }
307
- | FilterObject<Entity>;
308
- /** Fetch `first` N items. */
309
- first?: number;
310
- /** Fetch `last` N items. */
311
- last?: number;
312
- /** Fetch one more item than `first`/`last`, enabled automatically in `em.findByCursor` to check if there is a next page. */
313
- overfetch?: boolean;
314
- refresh?: boolean;
315
- convertCustomTypes?: boolean;
316
- disableIdentityMap?: boolean;
317
- schema?: string;
318
- flags?: QueryFlag[];
319
- /** sql only */
320
- groupBy?: string | string[];
321
- having?: FilterQuery<Entity>;
322
- /** sql only */
323
- strategy?: LoadStrategy | `${LoadStrategy}`;
324
- flushMode?: FlushMode | `${FlushMode}`;
325
- filters?: FilterOptions;
326
- /** sql only */
327
- lockMode?: Exclude<LockMode, LockMode.OPTIMISTIC>;
328
- /** sql only */
329
- lockTableAliases?: string[];
330
- ctx?: Transaction;
331
- connectionType?: ConnectionType;
332
- /** SQL: appended to FROM clause (e.g. `'force index(my_index)'`); MongoDB: index name or spec passed as `hint`. */
333
- indexHint?: string | Dictionary;
334
- /** sql only */
335
- comments?: string | string[];
336
- /** sql only */
337
- hintComments?: string | string[];
338
- /** SQL: collation name string applied as COLLATE to ORDER BY; MongoDB: CollationOptions object. */
339
- collation?: CollationOptions | string;
340
- /** mongodb only */
341
- maxTimeMS?: number;
342
- /** mongodb only */
343
- allowDiskUse?: boolean;
344
- loggerContext?: LogContext;
345
- logging?: LoggingOptions;
346
- /** @internal used to apply filters to the auto-joined relations */
347
- em?: EntityManager;
187
+ } | FilterObject<Entity>;
188
+ /** Fetch `first` N items. */
189
+ first?: number;
190
+ /** Fetch `last` N items. */
191
+ last?: number;
192
+ /** Fetch one more item than `first`/`last`, enabled automatically in `em.findByCursor` to check if there is a next page. */
193
+ overfetch?: boolean;
194
+ refresh?: boolean;
195
+ convertCustomTypes?: boolean;
196
+ disableIdentityMap?: boolean;
197
+ schema?: string;
198
+ flags?: QueryFlag[];
199
+ /** sql only */
200
+ groupBy?: string | string[];
201
+ having?: FilterQuery<Entity>;
202
+ /** sql only */
203
+ strategy?: LoadStrategy | `${LoadStrategy}`;
204
+ flushMode?: FlushMode | `${FlushMode}`;
205
+ filters?: FilterOptions;
206
+ /** sql only */
207
+ lockMode?: Exclude<LockMode, LockMode.OPTIMISTIC>;
208
+ /** sql only */
209
+ lockTableAliases?: string[];
210
+ ctx?: Transaction;
211
+ connectionType?: ConnectionType;
212
+ /** SQL: appended to FROM clause (e.g. `'force index(my_index)'`); MongoDB: index name or spec passed as `hint`. */
213
+ indexHint?: string | Dictionary;
214
+ /** sql only */
215
+ comments?: string | string[];
216
+ /** sql only */
217
+ hintComments?: string | string[];
218
+ /** SQL: collation name string applied as COLLATE to ORDER BY; MongoDB: CollationOptions object. */
219
+ collation?: CollationOptions | string;
220
+ /** mongodb only */
221
+ maxTimeMS?: number;
222
+ /** mongodb only */
223
+ allowDiskUse?: boolean;
224
+ loggerContext?: LogContext;
225
+ logging?: LoggingOptions;
226
+ /** @internal used to apply filters to the auto-joined relations */
227
+ em?: EntityManager;
348
228
  }
349
229
  /** Options for cursor-based pagination via `em.findByCursor()`. */
350
- export interface FindByCursorOptions<
351
- T extends object,
352
- P extends string = never,
353
- F extends string = never,
354
- E extends string = never,
355
- I extends boolean = true,
356
- > extends Omit<FindAllOptions<T, P, F, E>, 'limit' | 'offset'> {
357
- includeCount?: I;
230
+ export interface FindByCursorOptions<T extends object, P extends string = never, F extends string = never, E extends string = never, I extends boolean = true> extends Omit<FindAllOptions<T, P, F, E>, 'limit' | 'offset'> {
231
+ includeCount?: I;
358
232
  }
359
233
  /** Options for `em.findOne()`, extends FindOptions with optimistic lock version support. */
360
- export interface FindOneOptions<
361
- T,
362
- P extends string = never,
363
- F extends string = never,
364
- E extends string = never,
365
- > extends Omit<FindOptions<T, P, F, E>, 'limit' | 'lockMode'> {
366
- lockMode?: LockMode;
367
- lockVersion?: number | Date;
234
+ export interface FindOneOptions<T, P extends string = never, F extends string = never, E extends string = never> extends Omit<FindOptions<T, P, F, E>, 'limit' | 'lockMode'> {
235
+ lockMode?: LockMode;
236
+ lockVersion?: number | Date;
368
237
  }
369
238
  /** Options for `em.findOneOrFail()`, adds a custom error handler for missing entities. */
370
- export interface FindOneOrFailOptions<
371
- T extends object,
372
- P extends string = never,
373
- F extends string = never,
374
- E extends string = never,
375
- > extends FindOneOptions<T, P, F, E> {
376
- failHandler?: (entityName: string, where: Dictionary | IPrimaryKey | any) => Error;
377
- strict?: boolean;
239
+ export interface FindOneOrFailOptions<T extends object, P extends string = never, F extends string = never, E extends string = never> extends FindOneOptions<T, P, F, E> {
240
+ failHandler?: (entityName: string, where: Dictionary | IPrimaryKey | any) => Error;
241
+ strict?: boolean;
378
242
  }
379
243
  /** Options for native insert and update operations. */
380
244
  export interface NativeInsertUpdateOptions<T> {
381
- convertCustomTypes?: boolean;
382
- ctx?: Transaction;
383
- schema?: string;
384
- /** `nativeUpdate()` only option */
385
- upsert?: boolean;
386
- loggerContext?: LogContext;
387
- /** sql only */
388
- unionWhere?: ObjectQuery<T>[];
389
- /** sql only */
390
- unionWhereStrategy?: 'union-all' | 'union';
391
- filters?: FilterOptions;
392
- /** @internal */
393
- em?: EntityManager;
245
+ convertCustomTypes?: boolean;
246
+ ctx?: Transaction;
247
+ schema?: string;
248
+ /** `nativeUpdate()` only option */
249
+ upsert?: boolean;
250
+ loggerContext?: LogContext;
251
+ /** sql only */
252
+ unionWhere?: ObjectQuery<T>[];
253
+ /** sql only */
254
+ unionWhereStrategy?: 'union-all' | 'union';
255
+ filters?: FilterOptions;
256
+ /** @internal */
257
+ em?: EntityManager;
394
258
  }
395
259
  /** Options for batch native insert and update operations. */
396
260
  export interface NativeInsertUpdateManyOptions<T> extends NativeInsertUpdateOptions<T> {
397
- processCollections?: boolean;
261
+ processCollections?: boolean;
398
262
  }
399
263
  /** Options for `em.upsert()`, controlling conflict resolution behavior. */
400
- export interface UpsertOptions<Entity, Fields extends string = never> extends Omit<
401
- NativeInsertUpdateOptions<Entity>,
402
- 'upsert'
403
- > {
404
- onConflictFields?: (keyof Entity)[] | Raw;
405
- onConflictAction?: 'ignore' | 'merge';
406
- onConflictMergeFields?: AutoPath<Entity, Fields, `${PopulatePath.ALL}`>[];
407
- onConflictExcludeFields?: AutoPath<Entity, Fields, `${PopulatePath.ALL}`>[];
408
- onConflictWhere?: FilterQuery<Entity>;
409
- disableIdentityMap?: boolean;
264
+ export interface UpsertOptions<Entity, Fields extends string = never> extends Omit<NativeInsertUpdateOptions<Entity>, 'upsert'> {
265
+ onConflictFields?: (keyof Entity)[] | Raw;
266
+ onConflictAction?: 'ignore' | 'merge';
267
+ onConflictMergeFields?: AutoPath<Entity, Fields, `${PopulatePath.ALL}`>[];
268
+ onConflictExcludeFields?: AutoPath<Entity, Fields, `${PopulatePath.ALL}`>[];
269
+ onConflictWhere?: FilterQuery<Entity>;
270
+ disableIdentityMap?: boolean;
410
271
  }
411
272
  /** Options for `em.upsertMany()`, adds batch size control. */
412
273
  export interface UpsertManyOptions<Entity, Fields extends string = never> extends UpsertOptions<Entity, Fields> {
413
- batchSize?: number;
274
+ batchSize?: number;
414
275
  }
415
276
  /** Options for `em.count()` queries. */
416
277
  export interface CountOptions<T extends object, P extends string = never> {
417
- filters?: FilterOptions;
418
- schema?: string;
419
- groupBy?: string | readonly string[];
420
- having?: FilterQuery<T>;
421
- cache?: boolean | number | [string, number];
422
- populate?: Populate<T, P>;
423
- populateWhere?: ObjectQuery<T> | PopulateHint | `${PopulateHint}`;
424
- populateFilter?: ObjectQuery<T>;
425
- /** @see FindOptions.unionWhere */
426
- unionWhere?: ObjectQuery<T>[];
427
- /** @see FindOptions.unionWhereStrategy */
428
- unionWhereStrategy?: 'union-all' | 'union';
429
- ctx?: Transaction;
430
- connectionType?: ConnectionType;
431
- flushMode?: FlushMode | `${FlushMode}`;
432
- /** SQL: appended to FROM clause (e.g. `'force index(my_index)'`); MongoDB: index name or spec passed as `hint`. */
433
- indexHint?: string | Dictionary;
434
- /** sql only */
435
- comments?: string | string[];
436
- /** sql only */
437
- hintComments?: string | string[];
438
- /** SQL: collation name string applied as COLLATE; MongoDB: CollationOptions object. */
439
- collation?: CollationOptions | string;
440
- /** mongodb only */
441
- maxTimeMS?: number;
442
- loggerContext?: LogContext;
443
- logging?: LoggingOptions;
444
- /** @internal used to apply filters to the auto-joined relations */
445
- em?: EntityManager;
278
+ filters?: FilterOptions;
279
+ schema?: string;
280
+ groupBy?: string | readonly string[];
281
+ having?: FilterQuery<T>;
282
+ cache?: boolean | number | [string, number];
283
+ populate?: Populate<T, P>;
284
+ populateWhere?: ObjectQuery<T> | PopulateHint | `${PopulateHint}`;
285
+ populateFilter?: ObjectQuery<T>;
286
+ /** @see FindOptions.unionWhere */
287
+ unionWhere?: ObjectQuery<T>[];
288
+ /** @see FindOptions.unionWhereStrategy */
289
+ unionWhereStrategy?: 'union-all' | 'union';
290
+ ctx?: Transaction;
291
+ connectionType?: ConnectionType;
292
+ flushMode?: FlushMode | `${FlushMode}`;
293
+ /** SQL: appended to FROM clause (e.g. `'force index(my_index)'`); MongoDB: index name or spec passed as `hint`. */
294
+ indexHint?: string | Dictionary;
295
+ /** sql only */
296
+ comments?: string | string[];
297
+ /** sql only */
298
+ hintComments?: string | string[];
299
+ /** SQL: collation name string applied as COLLATE; MongoDB: CollationOptions object. */
300
+ collation?: CollationOptions | string;
301
+ /** mongodb only */
302
+ maxTimeMS?: number;
303
+ loggerContext?: LogContext;
304
+ logging?: LoggingOptions;
305
+ /** @internal used to apply filters to the auto-joined relations */
306
+ em?: EntityManager;
446
307
  }
447
308
  /** Options for `em.qb().update()` operations. */
448
309
  export interface UpdateOptions<T> {
449
- filters?: FilterOptions;
450
- schema?: string;
451
- ctx?: Transaction;
452
- /** sql only */
453
- unionWhere?: ObjectQuery<T>[];
454
- /** sql only */
455
- unionWhereStrategy?: 'union-all' | 'union';
310
+ filters?: FilterOptions;
311
+ schema?: string;
312
+ ctx?: Transaction;
313
+ /** sql only */
314
+ unionWhere?: ObjectQuery<T>[];
315
+ /** sql only */
316
+ unionWhereStrategy?: 'union-all' | 'union';
456
317
  }
457
318
  /** Options for `em.qb().delete()` operations. */
458
319
  export interface DeleteOptions<T> extends DriverMethodOptions {
459
- filters?: FilterOptions;
460
- /** sql only */
461
- unionWhere?: ObjectQuery<T>[];
462
- /** sql only */
463
- unionWhereStrategy?: 'union-all' | 'union';
464
- /** @internal */
465
- em?: EntityManager;
320
+ filters?: FilterOptions;
321
+ /** sql only */
322
+ unionWhere?: ObjectQuery<T>[];
323
+ /** sql only */
324
+ unionWhereStrategy?: 'union-all' | 'union';
325
+ /** @internal */
326
+ em?: EntityManager;
466
327
  }
467
328
  /** Options for `em.nativeDelete()` operations. */
468
329
  export interface NativeDeleteOptions<T> extends DriverMethodOptions {
469
- filters?: FilterOptions;
470
- /** sql only */
471
- unionWhere?: ObjectQuery<T>[];
472
- /** sql only */
473
- unionWhereStrategy?: 'union-all' | 'union';
474
- /** @internal */
475
- em?: EntityManager;
330
+ filters?: FilterOptions;
331
+ /** sql only */
332
+ unionWhere?: ObjectQuery<T>[];
333
+ /** sql only */
334
+ unionWhereStrategy?: 'union-all' | 'union';
335
+ /** @internal */
336
+ em?: EntityManager;
476
337
  }
477
338
  /** Options for pessimistic and optimistic lock operations. */
478
339
  export interface LockOptions extends DriverMethodOptions {
479
- lockMode?: LockMode;
480
- lockVersion?: number | Date;
481
- lockTableAliases?: string[];
482
- logging?: LoggingOptions;
340
+ lockMode?: LockMode;
341
+ lockVersion?: number | Date;
342
+ lockTableAliases?: string[];
343
+ logging?: LoggingOptions;
483
344
  }
484
345
  /** Base options shared by all driver methods (transaction context, schema, logging). */
485
346
  export interface DriverMethodOptions {
486
- ctx?: Transaction;
487
- schema?: string;
488
- loggerContext?: LogContext;
347
+ ctx?: Transaction;
348
+ schema?: string;
349
+ loggerContext?: LogContext;
489
350
  }
490
351
  /** MongoDB-style collation options for locale-aware string comparison. */
491
352
  export interface CollationOptions {
492
- locale: string;
493
- caseLevel?: boolean;
494
- caseFirst?: string;
495
- strength?: number;
496
- numericOrdering?: boolean;
497
- alternate?: string;
498
- maxVariable?: string;
499
- backwards?: boolean;
353
+ locale: string;
354
+ caseLevel?: boolean;
355
+ caseFirst?: string;
356
+ strength?: number;
357
+ numericOrdering?: boolean;
358
+ alternate?: string;
359
+ maxVariable?: string;
360
+ backwards?: boolean;
500
361
  }
501
362
  /** Options for `em.getReference()`, controlling wrapping and type conversion. */
502
363
  export interface GetReferenceOptions {
503
- wrapped?: boolean;
504
- convertCustomTypes?: boolean;
505
- schema?: string;
506
- /**
507
- * Property name to use for identity map lookup instead of the primary key.
508
- * This is useful for creating references by unique non-PK properties.
509
- */
510
- key?: string;
364
+ wrapped?: boolean;
365
+ convertCustomTypes?: boolean;
366
+ schema?: string;
367
+ /**
368
+ * Property name to use for identity map lookup instead of the primary key.
369
+ * This is useful for creating references by unique non-PK properties.
370
+ */
371
+ key?: string;
511
372
  }