Skip to content

Commit 2783082

Browse files
committed
Fix lazy ts type in modular selects
1 parent 88c64e5 commit 2783082

File tree

5 files changed

+51
-44
lines changed

5 files changed

+51
-44
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "workers-qb",
3-
"version": "1.10.1",
3+
"version": "1.10.2",
44
"description": "Zero dependencies Query Builder for Cloudflare Workers",
55
"main": "./dist/index.js",
66
"module": "./dist/index.mjs",

src/builder.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,19 @@ export class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true>
131131
)
132132
}
133133

134-
fetchAll<GenericResult = DefaultReturnObject, IsLazy extends true | undefined = undefined>(
135-
params: SelectAll<IsLazy>
136-
): QueryWithExtra<GenericResultWrapper, ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>, IsAsync> {
134+
fetchAll<GenericResult = DefaultReturnObject, P extends SelectAll = SelectAll>(
135+
params: P
136+
): QueryWithExtra<
137+
GenericResultWrapper,
138+
ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends { lazy: true } ? true : false>,
139+
IsAsync
140+
> {
137141
return new QueryWithExtra(
138142
(q) => {
139143
return params.lazy
140144
? (this.lazyExecute(q) as unknown as MaybeAsync<
141145
IsAsync,
142-
ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>
146+
ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends { lazy: true } ? true : false>
143147
>)
144148
: this.execute(q)
145149
},

src/interfaces.ts

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ export type RawQueryFetchAll = Omit<RawQuery, 'fetchType'> & {
5858

5959
export type RawQueryWithoutFetching = Omit<RawQuery, 'fetchType'>
6060

61-
export type SelectAll<IsLazy extends true | undefined = undefined> = SelectOne & {
61+
export type SelectAll = SelectOne & {
6262
limit?: number
63-
lazy?: IsLazy
63+
lazy?: boolean
6464
}
6565

6666
export type ConflictUpsert = {
@@ -145,31 +145,22 @@ export type PGResult = {
145145
rowCount: number
146146
}
147147

148-
export type IterableResult<
149-
ResultWrapper,
150-
Result,
151-
IsAsync extends boolean,
152-
IsLazy extends true | undefined = undefined,
153-
> = IsLazy extends true
154-
? IsAsync extends true
155-
? Promise<Merge<ResultWrapper, { results?: AsyncIterable<Result> }>>
156-
: Merge<ResultWrapper, { results?: Iterable<Result> }>
157-
: never
148+
export type IterableResult<ResultWrapper, Result, IsAsync extends boolean> = IsAsync extends true
149+
? Promise<Merge<ResultWrapper, { results?: AsyncIterable<Result> }>>
150+
: Merge<ResultWrapper, { results?: Iterable<Result> }>
151+
152+
export type FullArrayResult<ResultWrapper, Result, IsAsync extends boolean> = IsAsync extends true
153+
? Promise<Merge<ResultWrapper, { results?: Array<Result> }>>
154+
: Merge<ResultWrapper, { results?: Array<Result> }>
158155

159-
export type FullArrayResult<
156+
export type ArrayResult<
160157
ResultWrapper,
161158
Result,
162159
IsAsync extends boolean,
163-
IsLazy extends true | undefined = undefined,
164-
> = IsLazy extends undefined
165-
? IsAsync extends true
166-
? Promise<Merge<ResultWrapper, { results?: Array<Result> }>>
167-
: Merge<ResultWrapper, { results?: Array<Result> }>
168-
: never
169-
170-
export type ArrayResult<ResultWrapper, Result, IsAsync extends boolean, IsLazy extends true | undefined = undefined> =
171-
| IterableResult<ResultWrapper, Result, IsAsync, IsLazy>
172-
| FullArrayResult<ResultWrapper, Result, IsAsync, IsLazy>
160+
IsLazy extends boolean = false,
161+
> = IsLazy extends true
162+
? IterableResult<ResultWrapper, Result, IsAsync>
163+
: FullArrayResult<ResultWrapper, Result, IsAsync>
173164

174165
export type OneResult<ResultWrapper, Result> = Merge<ResultWrapper, { results?: Result }>
175166

src/modularBuilder.ts

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import {
1010
} from './interfaces'
1111
import { Query, QueryWithExtra } from './tools'
1212

13-
export interface SelectExecuteOptions<IsLazy extends true | undefined> {
14-
lazy?: IsLazy
13+
export interface SelectExecuteOptions {
14+
lazy?: boolean
1515
}
1616

1717
export class SelectBuilder<GenericResultWrapper, GenericResult = DefaultReturnObject, IsAsync extends boolean = true> {
@@ -207,26 +207,38 @@ export class SelectBuilder<GenericResultWrapper, GenericResult = DefaultReturnOb
207207
)
208208
}
209209

210-
getQueryAll<IsLazy extends true | undefined = undefined>(
211-
options?: SelectExecuteOptions<IsLazy>
212-
): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>, IsAsync> {
213-
return this._fetchAll(this._options as SelectAll)
210+
getQueryAll<P extends SelectExecuteOptions = SelectExecuteOptions>(
211+
options?: P
212+
): Query<
213+
ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends { lazy: true } ? true : false>,
214+
IsAsync
215+
> {
216+
return this._fetchAll({
217+
...this._options,
218+
...options,
219+
} as SelectAll)
214220
}
215221

216222
getQueryOne(): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync> {
217223
return this._fetchOne(this._options as SelectAll)
218224
}
219225

220-
execute<IsLazy extends true | undefined = undefined>(
221-
options?: SelectExecuteOptions<IsLazy>
222-
): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy> {
223-
return this._fetchAll(this._options as SelectAll).execute()
226+
execute<P extends SelectExecuteOptions = SelectExecuteOptions>(
227+
options?: P
228+
): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends { lazy: true } ? true : false> {
229+
return this._fetchAll({
230+
...this._options,
231+
...options,
232+
} as SelectAll).execute()
224233
}
225234

226-
all<IsLazy extends true | undefined = undefined>(
227-
options?: SelectExecuteOptions<IsLazy>
228-
): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy> {
229-
return this._fetchAll(this._options as SelectAll).execute()
235+
all<P extends SelectExecuteOptions = SelectExecuteOptions>(
236+
options?: P
237+
): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends { lazy: true } ? true : false> {
238+
return this._fetchAll({
239+
...this._options,
240+
...options,
241+
} as SelectAll).execute()
230242
}
231243

232244
one(): MaybeAsync<IsAsync, OneResult<GenericResultWrapper, GenericResult>> {

0 commit comments

Comments
 (0)