Skip to content

Commit cbd6804

Browse files
committed
fix regression in takeFirst.
1 parent 2e015b8 commit cbd6804

File tree

8 files changed

+36
-19
lines changed

8 files changed

+36
-19
lines changed

src/query-builder/delete-query-builder.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
Nullable,
3333
ShallowRecord,
3434
SimplifyResult,
35+
SimplifySingleResult,
3536
SqlBool,
3637
} from '../util/type-utils.js'
3738
import { Compilable } from '../util/compilable.js'
@@ -1075,7 +1076,7 @@ export class DeleteQueryBuilder<DB, TB extends keyof DB, O>
10751076

10761077
async executeTakeFirst(
10771078
options?: ExecuteOptions,
1078-
): Promise<SimplifyResult<O> | undefined> {
1079+
): Promise<SimplifySingleResult<O>> {
10791080
const [result] = await this.execute(options)
10801081

10811082
return result
@@ -1105,7 +1106,7 @@ export class DeleteQueryBuilder<DB, TB extends keyof DB, O>
11051106
throw error
11061107
}
11071108

1108-
return result
1109+
return result as never
11091110
}
11101111

11111112
async *stream(chunkSize: number = 100): AsyncIterableIterator<O> {

src/query-builder/insert-query-builder.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ import {
1313
} from '../parser/insert-values-parser.js'
1414
import { InsertQueryNode } from '../operation-node/insert-query-node.js'
1515
import { QueryNode } from '../operation-node/query-node.js'
16-
import { NarrowPartial, SimplifyResult } from '../util/type-utils.js'
16+
import {
17+
NarrowPartial,
18+
SimplifyResult,
19+
SimplifySingleResult,
20+
} from '../util/type-utils.js'
1721
import {
1822
UpdateObjectExpression,
1923
parseUpdateObjectExpression,
@@ -1310,7 +1314,7 @@ export class InsertQueryBuilder<DB, TB extends keyof DB, O>
13101314

13111315
async executeTakeFirst(
13121316
options?: ExecuteOptions,
1313-
): Promise<SimplifyResult<O> | undefined> {
1317+
): Promise<SimplifySingleResult<O>> {
13141318
const [result] = await this.execute(options)
13151319

13161320
return result
@@ -1340,7 +1344,7 @@ export class InsertQueryBuilder<DB, TB extends keyof DB, O>
13401344
throw error
13411345
}
13421346

1343-
return result as SimplifyResult<O>
1347+
return result as never
13441348
}
13451349

13461350
async *stream(chunkSize: number = 100): AsyncIterableIterator<O> {

src/query-builder/merge-query-builder.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ import {
5252
} from '../util/executable.js'
5353
import { freeze } from '../util/object-utils.js'
5454
import { QueryId } from '../util/query-id.js'
55-
import { ShallowRecord, SimplifyResult, SqlBool } from '../util/type-utils.js'
55+
import {
56+
ShallowRecord,
57+
SimplifyResult,
58+
SimplifySingleResult,
59+
SqlBool,
60+
} from '../util/type-utils.js'
5661
import { MergeResult } from './merge-result.js'
5762
import { NoResultError, isNoResultErrorConstructor } from './no-result-error.js'
5863
import {
@@ -895,7 +900,7 @@ export class WheneableMergeQueryBuilder<
895900

896901
async executeTakeFirst(
897902
options?: ExecuteOptions,
898-
): Promise<SimplifyResult<O> | undefined> {
903+
): Promise<SimplifySingleResult<O>> {
899904
const [result] = await this.execute(options)
900905

901906
return result
@@ -925,7 +930,7 @@ export class WheneableMergeQueryBuilder<
925930
throw error
926931
}
927932

928-
return result
933+
return result as never
929934
}
930935
}
931936

src/query-builder/select-query-builder.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
ShallowRecord,
3232
Simplify,
3333
SimplifyResult,
34+
SimplifySingleResult,
3435
SqlBool,
3536
} from '../util/type-utils.js'
3637
import {
@@ -2121,9 +2122,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O>
21212122

21222123
execute(options?: ExecuteOptions): Promise<NonNullable<SimplifyResult<O>>[]>
21232124

2124-
executeTakeFirst(
2125-
options?: ExecuteOptions,
2126-
): Promise<SimplifyResult<O> | undefined>
2125+
executeTakeFirst(options?: ExecuteOptions): Promise<SimplifySingleResult<O>>
21272126

21282127
executeTakeFirstOrThrow(
21292128
options?: ExecuteOrThrowOptions | ExecuteOrThrowOptions['errorConstructor'],
@@ -2647,7 +2646,7 @@ class SelectQueryBuilderImpl<DB, TB extends keyof DB, O>
26472646

26482647
async executeTakeFirst(
26492648
options?: ExecuteOptions,
2650-
): Promise<SimplifyResult<O> | undefined> {
2649+
): Promise<SimplifySingleResult<O>> {
26512650
const [result] = await this.execute(options)
26522651

26532652
return result
@@ -2677,7 +2676,7 @@ class SelectQueryBuilderImpl<DB, TB extends keyof DB, O>
26772676
throw error
26782677
}
26792678

2680-
return result
2679+
return result as never
26812680
}
26822681

26832682
async *stream(chunkSize: number = 100): AsyncIterableIterator<O> {

src/query-builder/update-query-builder.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
Nullable,
3333
ShallowRecord,
3434
SimplifyResult,
35+
SimplifySingleResult,
3536
SqlBool,
3637
} from '../util/type-utils.js'
3738
import { UpdateQueryNode } from '../operation-node/update-query-node.js'
@@ -1169,7 +1170,7 @@ export class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O>
11691170

11701171
async executeTakeFirst(
11711172
options?: ExecuteOptions,
1172-
): Promise<SimplifyResult<O> | undefined> {
1173+
): Promise<SimplifySingleResult<O>> {
11731174
const [result] = await this.execute(options)
11741175

11751176
return result
@@ -1199,7 +1200,7 @@ export class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O>
11991200
throw error
12001201
}
12011202

1202-
return result
1203+
return result as never
12031204
}
12041205

12051206
async *stream(chunkSize: number = 100): AsyncIterableIterator<O> {

src/query-executor/query-executor.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export interface QueryExecutor extends ConnectionProvider {
6161
* only by the postgres driver.
6262
*/
6363
chunkSize: number,
64+
options?: ExecuteQueryOptions,
6465
): AsyncIterableIterator<QueryResult<R>>
6566

6667
/**

src/util/executable.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { QueryNode } from '../operation-node/query-node.js'
22
import { NoResultErrorConstructor } from '../query-builder/no-result-error.js'
33
import { ExecuteQueryOptions } from '../query-executor/query-executor.js'
4-
import { SimplifyResult } from './type-utils.js'
4+
import { SimplifyResult, SimplifySingleResult } from './type-utils.js'
55

66
export interface Executable<O> {
77
/**
@@ -15,9 +15,7 @@ export interface Executable<O> {
1515
* Executes the query and returns the first result or undefined if
1616
* the query returned no result.
1717
*/
18-
executeTakeFirst(
19-
options?: ExecuteOptions,
20-
): Promise<SimplifyResult<O> | undefined>
18+
executeTakeFirst(options?: ExecuteOptions): Promise<SimplifySingleResult<O>>
2119

2220
/**
2321
* Executes the query and returns the first result or throws if

src/util/type-utils.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,14 @@ export type SimplifyResult<O> = O extends
111111
? O
112112
: Simplify<O>
113113

114+
export type SimplifySingleResult<O> = O extends
115+
| InsertResult
116+
| UpdateResult
117+
| DeleteResult
118+
| MergeResult
119+
? O
120+
: Simplify<O> | undefined
121+
114122
export type Simplify<T> = DrainOuterGeneric<{ [K in keyof T]: T[K] } & {}>
115123

116124
/**

0 commit comments

Comments
 (0)