(
query: string | NativeQueryBuilder | RawQueryFragment,
params: any[] = [],
methodOrOptions: 'all' | 'get' | 'run' | EmExecuteOptions = 'all',
loggerContext?: LoggingOptions,
)
| 148 | options: EmExecuteOptions, |
| 149 | ): Promise<T>; |
| 150 | async execute<T extends QueryResult | EntityData<AnyEntity> | EntityData<AnyEntity>[] = EntityData<AnyEntity>[]>( |
| 151 | query: string | NativeQueryBuilder | RawQueryFragment, |
| 152 | params: any[] = [], |
| 153 | methodOrOptions: 'all' | 'get' | 'run' | EmExecuteOptions = 'all', |
| 154 | loggerContext?: LoggingOptions, |
| 155 | ): Promise<T> { |
| 156 | const opts: EmExecuteOptions = |
| 157 | typeof methodOrOptions === 'string' ? { method: methodOrOptions, loggerContext } : methodOrOptions; |
| 158 | const context = this.getContext(false); |
| 159 | // Per-field fallback to fork-level abort, matching `EntityManager.prepareOptions` semantics. |
| 160 | const fork = context.getAbortOptions(); |
| 161 | const hasAbort = opts.signal != null || opts.inflightQueryAbortStrategy != null || fork != null; |
| 162 | // Connection layer carries abort piggy-backed on `loggerContext`; merge only when needed. |
| 163 | const merged: (LoggingOptions & Partial<AbortQueryOptions>) | undefined = |
| 164 | hasAbort || opts.loggerContext ? { ...(opts.loggerContext as Dictionary | undefined) } : undefined; |
| 165 | if (merged && hasAbort) { |
| 166 | merged.signal = opts.signal ?? fork?.signal; |
| 167 | merged.inflightQueryAbortStrategy = opts.inflightQueryAbortStrategy ?? fork?.inflightQueryAbortStrategy; |
| 168 | } |
| 169 | return this.getDriver().execute( |
| 170 | query, |
| 171 | params, |
| 172 | opts.method ?? 'all', |
| 173 | context.getTransactionContext(), |
| 174 | merged, |
| 175 | ) as Promise<T>; |
| 176 | } |
| 177 | |
| 178 | /** |
| 179 | * @inheritDoc |
nothing calls this directly
no test coverage detected