workers-qb 1.10.0 → 1.11.0
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.
- package/README.md +12 -6
- package/dist/index.d.mts +68 -44
- package/dist/index.d.ts +68 -44
- package/dist/index.js +292 -76
- package/dist/index.mjs +289 -73
- package/package.json +12 -14
package/README.md
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<
|
|
3
|
-
|
|
2
|
+
<a href="https://workers-qb.massadas.com/">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/G4brym/workers-qb/refs/heads/main/docs/assets/logo.png" width="500" height="auto" alt="workers-qb"/>
|
|
4
|
+
</a>
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<em>Zero-dependency Query Builder for Cloudflare Workers</em>
|
|
9
|
+
</p>
|
|
4
10
|
|
|
5
|
-
|
|
11
|
+
<p align="center">
|
|
6
12
|
<a href="https://workers-qb.massadas.com/" target="_blank">
|
|
7
13
|
<img src="https://img.shields.io/badge/docs-workers--qb-blue.svg" alt="Documentation">
|
|
8
14
|
</a>
|
|
@@ -12,8 +18,7 @@
|
|
|
12
18
|
<a href="https://github.com/G4brym/workers-qb/blob/main/LICENSE" target="_blank">
|
|
13
19
|
<img src="https://img.shields.io/badge/license-MIT-brightgreen.svg" alt="Software License">
|
|
14
20
|
</a>
|
|
15
|
-
|
|
16
|
-
</div>
|
|
21
|
+
</p>
|
|
17
22
|
|
|
18
23
|
## Overview
|
|
19
24
|
|
|
@@ -49,6 +54,7 @@ workers-qb is a lightweight query builder designed specifically for Cloudflare W
|
|
|
49
54
|
- CRUD operations (insert/update/select/delete)
|
|
50
55
|
- Bulk inserts
|
|
51
56
|
- JOIN queries
|
|
57
|
+
- Subqueries
|
|
52
58
|
- Modular SELECT queries
|
|
53
59
|
- ON CONFLICT handling
|
|
54
60
|
- UPSERT support
|
|
@@ -178,7 +184,7 @@ Visit our [comprehensive documentation](https://workers-qb.massadas.com/) for de
|
|
|
178
184
|
- [Advanced Queries](https://workers-qb.massadas.com/advanced-queries/)
|
|
179
185
|
- [Migrations](https://workers-qb.massadas.com/migrations/)
|
|
180
186
|
- [Type Checking](https://workers-qb.massadas.com/type-check/)
|
|
181
|
-
- [Database-specific guides](https://workers-qb.massadas.com/databases/)
|
|
187
|
+
- [Database-specific guides](https://workers-qb.massadas.com/databases/d1)
|
|
182
188
|
|
|
183
189
|
## Contributing
|
|
184
190
|
|
package/dist/index.d.mts
CHANGED
|
@@ -40,6 +40,42 @@ declare class QueryWithExtra<GenericResultWrapper, Result = any, IsAsync extends
|
|
|
40
40
|
}
|
|
41
41
|
declare function trimQuery(query: string): string;
|
|
42
42
|
|
|
43
|
+
interface SelectExecuteOptions {
|
|
44
|
+
lazy?: boolean;
|
|
45
|
+
}
|
|
46
|
+
declare class SelectBuilder<GenericResultWrapper, GenericResult = DefaultReturnObject, IsAsync extends boolean = true> {
|
|
47
|
+
_debugger: boolean;
|
|
48
|
+
_options: Partial<SelectAll>;
|
|
49
|
+
_fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
|
|
50
|
+
_fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
|
|
51
|
+
constructor(options: Partial<SelectAll>, fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>, fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>);
|
|
52
|
+
setDebugger(state: boolean): void;
|
|
53
|
+
tableName(tableName: SelectAll['tableName']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
54
|
+
fields(fields: SelectAll['fields']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
55
|
+
where(conditions: string | Array<string>, params?: Primitive | Primitive[]): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
56
|
+
whereIn<T extends string | Array<string>, P extends T extends Array<string> ? Primitive[][] : Primitive[]>(fields: T, values: P): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
57
|
+
join(join: SelectAll['join']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
58
|
+
groupBy(groupBy: SelectAll['groupBy']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
59
|
+
having(conditions: string | Array<string>, params?: Primitive | Primitive[]): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
60
|
+
orderBy(orderBy: SelectAll['orderBy']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
61
|
+
offset(offset: SelectAll['offset']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
62
|
+
limit(limit: SelectAll['limit']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
63
|
+
_parseArray(fieldName: string, option: any, value: any): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
64
|
+
getQueryAll<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
|
|
65
|
+
lazy: true;
|
|
66
|
+
} ? true : false>, IsAsync>;
|
|
67
|
+
getQueryOne(): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
|
|
68
|
+
execute<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
|
|
69
|
+
lazy: true;
|
|
70
|
+
} ? true : false>;
|
|
71
|
+
all<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
|
|
72
|
+
lazy: true;
|
|
73
|
+
} ? true : false>;
|
|
74
|
+
one(): MaybeAsync<IsAsync, OneResult<GenericResultWrapper, GenericResult>>;
|
|
75
|
+
count(): MaybeAsync<IsAsync, CountResult<GenericResultWrapper>>;
|
|
76
|
+
getOptions(): SelectAll;
|
|
77
|
+
}
|
|
78
|
+
|
|
43
79
|
type OmitIndexSignature<ObjectType> = {
|
|
44
80
|
[KeyType in keyof ObjectType as {} extends Record<KeyType, unknown> ? never : KeyType]: ObjectType[KeyType];
|
|
45
81
|
};
|
|
@@ -54,7 +90,7 @@ type SimpleMerge<Destination, Source> = {
|
|
|
54
90
|
} & Source;
|
|
55
91
|
type Merge<Destination, Source> = Simplify<SimpleMerge<PickIndexSignature<Destination>, PickIndexSignature<Source>> & SimpleMerge<OmitIndexSignature<Destination>, OmitIndexSignature<Source>>>;
|
|
56
92
|
|
|
57
|
-
type Primitive = null | string | number | boolean | bigint | Raw
|
|
93
|
+
type Primitive = null | string | number | boolean | bigint | Raw | SelectAll | SelectBuilder<any, any, any>;
|
|
58
94
|
type QueryLoggerMeta = {
|
|
59
95
|
duration?: number;
|
|
60
96
|
};
|
|
@@ -69,7 +105,7 @@ type Where = {
|
|
|
69
105
|
} | string | Array<string>;
|
|
70
106
|
type Join = {
|
|
71
107
|
type?: string | JoinTypes;
|
|
72
|
-
table: string | SelectAll
|
|
108
|
+
table: string | SelectAll | SelectBuilder<any, any, any>;
|
|
73
109
|
on: string;
|
|
74
110
|
alias?: string;
|
|
75
111
|
};
|
|
@@ -79,9 +115,11 @@ type SelectOne = {
|
|
|
79
115
|
where?: Where;
|
|
80
116
|
join?: Join | Array<Join>;
|
|
81
117
|
groupBy?: string | Array<string>;
|
|
82
|
-
having?:
|
|
118
|
+
having?: Where;
|
|
83
119
|
orderBy?: string | Array<string> | Record<string, string | OrderTypes>;
|
|
84
120
|
offset?: number;
|
|
121
|
+
subQueryPlaceholders?: Record<string, SelectAll>;
|
|
122
|
+
subQueryTokenNextId?: number;
|
|
85
123
|
};
|
|
86
124
|
type RawQuery = {
|
|
87
125
|
query: string;
|
|
@@ -95,9 +133,9 @@ type RawQueryFetchAll = Omit<RawQuery, 'fetchType'> & {
|
|
|
95
133
|
fetchType: FetchTypes.ALL;
|
|
96
134
|
};
|
|
97
135
|
type RawQueryWithoutFetching = Omit<RawQuery, 'fetchType'>;
|
|
98
|
-
type SelectAll
|
|
136
|
+
type SelectAll = SelectOne & {
|
|
99
137
|
limit?: number;
|
|
100
|
-
lazy?:
|
|
138
|
+
lazy?: boolean;
|
|
101
139
|
};
|
|
102
140
|
type ConflictUpsert = {
|
|
103
141
|
column: string | Array<string>;
|
|
@@ -166,17 +204,17 @@ type PGResult = {
|
|
|
166
204
|
lastRowId?: string | number;
|
|
167
205
|
rowCount: number;
|
|
168
206
|
};
|
|
169
|
-
type IterableResult<ResultWrapper, Result, IsAsync extends boolean
|
|
207
|
+
type IterableResult<ResultWrapper, Result, IsAsync extends boolean> = IsAsync extends true ? Promise<Merge<ResultWrapper, {
|
|
170
208
|
results?: AsyncIterable<Result>;
|
|
171
209
|
}>> : Merge<ResultWrapper, {
|
|
172
210
|
results?: Iterable<Result>;
|
|
173
|
-
}
|
|
174
|
-
type FullArrayResult<ResultWrapper, Result, IsAsync extends boolean
|
|
211
|
+
}>;
|
|
212
|
+
type FullArrayResult<ResultWrapper, Result, IsAsync extends boolean> = IsAsync extends true ? Promise<Merge<ResultWrapper, {
|
|
175
213
|
results?: Array<Result>;
|
|
176
214
|
}>> : Merge<ResultWrapper, {
|
|
177
215
|
results?: Array<Result>;
|
|
178
|
-
}
|
|
179
|
-
type ArrayResult<ResultWrapper, Result, IsAsync extends boolean, IsLazy extends
|
|
216
|
+
}>;
|
|
217
|
+
type ArrayResult<ResultWrapper, Result, IsAsync extends boolean, IsLazy extends boolean = false> = IsLazy extends true ? IterableResult<ResultWrapper, Result, IsAsync> : FullArrayResult<ResultWrapper, Result, IsAsync>;
|
|
180
218
|
type OneResult<ResultWrapper, Result> = Merge<ResultWrapper, {
|
|
181
219
|
results?: Result;
|
|
182
220
|
}>;
|
|
@@ -191,35 +229,6 @@ declare function defaultLogger(query: RawQuery, meta: QueryLoggerMeta): any;
|
|
|
191
229
|
declare function asyncLoggerWrapper<Async extends boolean = true>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): Promise<any>;
|
|
192
230
|
declare function syncLoggerWrapper<Async extends boolean = false>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): any;
|
|
193
231
|
|
|
194
|
-
interface SelectExecuteOptions<IsLazy extends true | undefined> {
|
|
195
|
-
lazy?: IsLazy;
|
|
196
|
-
}
|
|
197
|
-
declare class SelectBuilder<GenericResultWrapper, GenericResult = DefaultReturnObject, IsAsync extends boolean = true> {
|
|
198
|
-
_debugger: boolean;
|
|
199
|
-
_options: Partial<SelectAll>;
|
|
200
|
-
_fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
|
|
201
|
-
_fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
|
|
202
|
-
constructor(options: Partial<SelectAll>, fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>, fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>);
|
|
203
|
-
setDebugger(state: boolean): void;
|
|
204
|
-
tableName(tableName: SelectAll['tableName']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
205
|
-
fields(fields: SelectAll['fields']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
206
|
-
where(conditions: string | Array<string>, params?: Primitive | Primitive[]): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
207
|
-
whereIn<T extends string | Array<string>, P extends T extends Array<string> ? Primitive[][] : Primitive[]>(fields: T, values: P): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
208
|
-
join(join: SelectAll['join']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
209
|
-
groupBy(groupBy: SelectAll['groupBy']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
210
|
-
having(having: SelectAll['having']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
211
|
-
orderBy(orderBy: SelectAll['orderBy']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
212
|
-
offset(offset: SelectAll['offset']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
213
|
-
limit(limit: SelectAll['limit']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
214
|
-
_parseArray(fieldName: string, option: any, value: any): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
215
|
-
getQueryAll<IsLazy extends true | undefined = undefined>(options?: SelectExecuteOptions<IsLazy>): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>, IsAsync>;
|
|
216
|
-
getQueryOne(): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
|
|
217
|
-
execute<IsLazy extends true | undefined = undefined>(options?: SelectExecuteOptions<IsLazy>): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>;
|
|
218
|
-
all<IsLazy extends true | undefined = undefined>(options?: SelectExecuteOptions<IsLazy>): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>;
|
|
219
|
-
one(): MaybeAsync<IsAsync, OneResult<GenericResultWrapper, GenericResult>>;
|
|
220
|
-
count(): MaybeAsync<IsAsync, CountResult<GenericResultWrapper>>;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
232
|
declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true> {
|
|
224
233
|
protected options: QueryBuilderOptions<IsAsync>;
|
|
225
234
|
loggerWrapper: typeof asyncLoggerWrapper;
|
|
@@ -239,7 +248,9 @@ declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true>
|
|
|
239
248
|
}): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
|
|
240
249
|
select<GenericResult = DefaultReturnObject>(tableName: string): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
241
250
|
fetchOne<GenericResult = DefaultReturnObject>(params: SelectOne): QueryWithExtra<GenericResultWrapper, OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
|
|
242
|
-
fetchAll<GenericResult = DefaultReturnObject,
|
|
251
|
+
fetchAll<GenericResult = DefaultReturnObject, P extends SelectAll = SelectAll>(params: P): QueryWithExtra<GenericResultWrapper, ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
|
|
252
|
+
lazy: true;
|
|
253
|
+
} ? true : false>, IsAsync>;
|
|
243
254
|
raw<GenericResult = DefaultReturnObject>(params: RawQueryFetchOne): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
|
|
244
255
|
raw<GenericResult = DefaultReturnObject>(params: RawQueryFetchAll): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
|
|
245
256
|
raw<GenericResult = DefaultReturnObject>(params: RawQueryWithoutFetching): Query<GenericResultWrapper, IsAsync>;
|
|
@@ -255,12 +266,25 @@ declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true>
|
|
|
255
266
|
protected _insert(params: Insert): string;
|
|
256
267
|
protected _update(params: Update): string;
|
|
257
268
|
protected _delete(params: Delete): string;
|
|
258
|
-
protected _select(params: SelectAll): string;
|
|
269
|
+
protected _select(params: SelectAll, queryArgs?: any[]): string;
|
|
259
270
|
protected _fields(value?: string | Array<string>): string;
|
|
260
|
-
protected _where(value
|
|
261
|
-
|
|
271
|
+
protected _where(value: Where | undefined, context?: {
|
|
272
|
+
subQueryPlaceholders?: Record<string, SelectAll>;
|
|
273
|
+
queryArgs: any[];
|
|
274
|
+
toSQLCompiler?: (params: SelectAll, queryArgs: any[]) => string;
|
|
275
|
+
}): string;
|
|
276
|
+
protected _join(value: Join | Array<Join> | undefined, context: {
|
|
277
|
+
subQueryPlaceholders?: Record<string, SelectAll>;
|
|
278
|
+
queryArgs: any[];
|
|
279
|
+
toSQLCompiler: (params: SelectAll, queryArgs: any[]) => string;
|
|
280
|
+
}): string;
|
|
262
281
|
protected _groupBy(value?: string | Array<string>): string;
|
|
263
|
-
protected _having(value
|
|
282
|
+
protected _having(value: Where | undefined, // Using Where type as Having structure is similar for conditions/params
|
|
283
|
+
context: {
|
|
284
|
+
subQueryPlaceholders?: Record<string, SelectAll>;
|
|
285
|
+
queryArgs: any[];
|
|
286
|
+
toSQLCompiler?: (params: SelectAll, queryArgs: any[]) => string;
|
|
287
|
+
}): string;
|
|
264
288
|
protected _orderBy(value?: string | Array<string> | Record<string, string | OrderTypes>): string;
|
|
265
289
|
protected _limit(value?: number): string;
|
|
266
290
|
protected _offset(value?: number): string;
|
package/dist/index.d.ts
CHANGED
|
@@ -40,6 +40,42 @@ declare class QueryWithExtra<GenericResultWrapper, Result = any, IsAsync extends
|
|
|
40
40
|
}
|
|
41
41
|
declare function trimQuery(query: string): string;
|
|
42
42
|
|
|
43
|
+
interface SelectExecuteOptions {
|
|
44
|
+
lazy?: boolean;
|
|
45
|
+
}
|
|
46
|
+
declare class SelectBuilder<GenericResultWrapper, GenericResult = DefaultReturnObject, IsAsync extends boolean = true> {
|
|
47
|
+
_debugger: boolean;
|
|
48
|
+
_options: Partial<SelectAll>;
|
|
49
|
+
_fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
|
|
50
|
+
_fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
|
|
51
|
+
constructor(options: Partial<SelectAll>, fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>, fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>);
|
|
52
|
+
setDebugger(state: boolean): void;
|
|
53
|
+
tableName(tableName: SelectAll['tableName']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
54
|
+
fields(fields: SelectAll['fields']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
55
|
+
where(conditions: string | Array<string>, params?: Primitive | Primitive[]): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
56
|
+
whereIn<T extends string | Array<string>, P extends T extends Array<string> ? Primitive[][] : Primitive[]>(fields: T, values: P): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
57
|
+
join(join: SelectAll['join']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
58
|
+
groupBy(groupBy: SelectAll['groupBy']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
59
|
+
having(conditions: string | Array<string>, params?: Primitive | Primitive[]): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
60
|
+
orderBy(orderBy: SelectAll['orderBy']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
61
|
+
offset(offset: SelectAll['offset']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
62
|
+
limit(limit: SelectAll['limit']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
63
|
+
_parseArray(fieldName: string, option: any, value: any): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
64
|
+
getQueryAll<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
|
|
65
|
+
lazy: true;
|
|
66
|
+
} ? true : false>, IsAsync>;
|
|
67
|
+
getQueryOne(): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
|
|
68
|
+
execute<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
|
|
69
|
+
lazy: true;
|
|
70
|
+
} ? true : false>;
|
|
71
|
+
all<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
|
|
72
|
+
lazy: true;
|
|
73
|
+
} ? true : false>;
|
|
74
|
+
one(): MaybeAsync<IsAsync, OneResult<GenericResultWrapper, GenericResult>>;
|
|
75
|
+
count(): MaybeAsync<IsAsync, CountResult<GenericResultWrapper>>;
|
|
76
|
+
getOptions(): SelectAll;
|
|
77
|
+
}
|
|
78
|
+
|
|
43
79
|
type OmitIndexSignature<ObjectType> = {
|
|
44
80
|
[KeyType in keyof ObjectType as {} extends Record<KeyType, unknown> ? never : KeyType]: ObjectType[KeyType];
|
|
45
81
|
};
|
|
@@ -54,7 +90,7 @@ type SimpleMerge<Destination, Source> = {
|
|
|
54
90
|
} & Source;
|
|
55
91
|
type Merge<Destination, Source> = Simplify<SimpleMerge<PickIndexSignature<Destination>, PickIndexSignature<Source>> & SimpleMerge<OmitIndexSignature<Destination>, OmitIndexSignature<Source>>>;
|
|
56
92
|
|
|
57
|
-
type Primitive = null | string | number | boolean | bigint | Raw
|
|
93
|
+
type Primitive = null | string | number | boolean | bigint | Raw | SelectAll | SelectBuilder<any, any, any>;
|
|
58
94
|
type QueryLoggerMeta = {
|
|
59
95
|
duration?: number;
|
|
60
96
|
};
|
|
@@ -69,7 +105,7 @@ type Where = {
|
|
|
69
105
|
} | string | Array<string>;
|
|
70
106
|
type Join = {
|
|
71
107
|
type?: string | JoinTypes;
|
|
72
|
-
table: string | SelectAll
|
|
108
|
+
table: string | SelectAll | SelectBuilder<any, any, any>;
|
|
73
109
|
on: string;
|
|
74
110
|
alias?: string;
|
|
75
111
|
};
|
|
@@ -79,9 +115,11 @@ type SelectOne = {
|
|
|
79
115
|
where?: Where;
|
|
80
116
|
join?: Join | Array<Join>;
|
|
81
117
|
groupBy?: string | Array<string>;
|
|
82
|
-
having?:
|
|
118
|
+
having?: Where;
|
|
83
119
|
orderBy?: string | Array<string> | Record<string, string | OrderTypes>;
|
|
84
120
|
offset?: number;
|
|
121
|
+
subQueryPlaceholders?: Record<string, SelectAll>;
|
|
122
|
+
subQueryTokenNextId?: number;
|
|
85
123
|
};
|
|
86
124
|
type RawQuery = {
|
|
87
125
|
query: string;
|
|
@@ -95,9 +133,9 @@ type RawQueryFetchAll = Omit<RawQuery, 'fetchType'> & {
|
|
|
95
133
|
fetchType: FetchTypes.ALL;
|
|
96
134
|
};
|
|
97
135
|
type RawQueryWithoutFetching = Omit<RawQuery, 'fetchType'>;
|
|
98
|
-
type SelectAll
|
|
136
|
+
type SelectAll = SelectOne & {
|
|
99
137
|
limit?: number;
|
|
100
|
-
lazy?:
|
|
138
|
+
lazy?: boolean;
|
|
101
139
|
};
|
|
102
140
|
type ConflictUpsert = {
|
|
103
141
|
column: string | Array<string>;
|
|
@@ -166,17 +204,17 @@ type PGResult = {
|
|
|
166
204
|
lastRowId?: string | number;
|
|
167
205
|
rowCount: number;
|
|
168
206
|
};
|
|
169
|
-
type IterableResult<ResultWrapper, Result, IsAsync extends boolean
|
|
207
|
+
type IterableResult<ResultWrapper, Result, IsAsync extends boolean> = IsAsync extends true ? Promise<Merge<ResultWrapper, {
|
|
170
208
|
results?: AsyncIterable<Result>;
|
|
171
209
|
}>> : Merge<ResultWrapper, {
|
|
172
210
|
results?: Iterable<Result>;
|
|
173
|
-
}
|
|
174
|
-
type FullArrayResult<ResultWrapper, Result, IsAsync extends boolean
|
|
211
|
+
}>;
|
|
212
|
+
type FullArrayResult<ResultWrapper, Result, IsAsync extends boolean> = IsAsync extends true ? Promise<Merge<ResultWrapper, {
|
|
175
213
|
results?: Array<Result>;
|
|
176
214
|
}>> : Merge<ResultWrapper, {
|
|
177
215
|
results?: Array<Result>;
|
|
178
|
-
}
|
|
179
|
-
type ArrayResult<ResultWrapper, Result, IsAsync extends boolean, IsLazy extends
|
|
216
|
+
}>;
|
|
217
|
+
type ArrayResult<ResultWrapper, Result, IsAsync extends boolean, IsLazy extends boolean = false> = IsLazy extends true ? IterableResult<ResultWrapper, Result, IsAsync> : FullArrayResult<ResultWrapper, Result, IsAsync>;
|
|
180
218
|
type OneResult<ResultWrapper, Result> = Merge<ResultWrapper, {
|
|
181
219
|
results?: Result;
|
|
182
220
|
}>;
|
|
@@ -191,35 +229,6 @@ declare function defaultLogger(query: RawQuery, meta: QueryLoggerMeta): any;
|
|
|
191
229
|
declare function asyncLoggerWrapper<Async extends boolean = true>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): Promise<any>;
|
|
192
230
|
declare function syncLoggerWrapper<Async extends boolean = false>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): any;
|
|
193
231
|
|
|
194
|
-
interface SelectExecuteOptions<IsLazy extends true | undefined> {
|
|
195
|
-
lazy?: IsLazy;
|
|
196
|
-
}
|
|
197
|
-
declare class SelectBuilder<GenericResultWrapper, GenericResult = DefaultReturnObject, IsAsync extends boolean = true> {
|
|
198
|
-
_debugger: boolean;
|
|
199
|
-
_options: Partial<SelectAll>;
|
|
200
|
-
_fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
|
|
201
|
-
_fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
|
|
202
|
-
constructor(options: Partial<SelectAll>, fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>, fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>);
|
|
203
|
-
setDebugger(state: boolean): void;
|
|
204
|
-
tableName(tableName: SelectAll['tableName']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
205
|
-
fields(fields: SelectAll['fields']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
206
|
-
where(conditions: string | Array<string>, params?: Primitive | Primitive[]): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
207
|
-
whereIn<T extends string | Array<string>, P extends T extends Array<string> ? Primitive[][] : Primitive[]>(fields: T, values: P): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
208
|
-
join(join: SelectAll['join']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
209
|
-
groupBy(groupBy: SelectAll['groupBy']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
210
|
-
having(having: SelectAll['having']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
211
|
-
orderBy(orderBy: SelectAll['orderBy']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
212
|
-
offset(offset: SelectAll['offset']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
213
|
-
limit(limit: SelectAll['limit']): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
214
|
-
_parseArray(fieldName: string, option: any, value: any): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
215
|
-
getQueryAll<IsLazy extends true | undefined = undefined>(options?: SelectExecuteOptions<IsLazy>): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>, IsAsync>;
|
|
216
|
-
getQueryOne(): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
|
|
217
|
-
execute<IsLazy extends true | undefined = undefined>(options?: SelectExecuteOptions<IsLazy>): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>;
|
|
218
|
-
all<IsLazy extends true | undefined = undefined>(options?: SelectExecuteOptions<IsLazy>): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, IsLazy>;
|
|
219
|
-
one(): MaybeAsync<IsAsync, OneResult<GenericResultWrapper, GenericResult>>;
|
|
220
|
-
count(): MaybeAsync<IsAsync, CountResult<GenericResultWrapper>>;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
232
|
declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true> {
|
|
224
233
|
protected options: QueryBuilderOptions<IsAsync>;
|
|
225
234
|
loggerWrapper: typeof asyncLoggerWrapper;
|
|
@@ -239,7 +248,9 @@ declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true>
|
|
|
239
248
|
}): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
|
|
240
249
|
select<GenericResult = DefaultReturnObject>(tableName: string): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
|
|
241
250
|
fetchOne<GenericResult = DefaultReturnObject>(params: SelectOne): QueryWithExtra<GenericResultWrapper, OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
|
|
242
|
-
fetchAll<GenericResult = DefaultReturnObject,
|
|
251
|
+
fetchAll<GenericResult = DefaultReturnObject, P extends SelectAll = SelectAll>(params: P): QueryWithExtra<GenericResultWrapper, ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
|
|
252
|
+
lazy: true;
|
|
253
|
+
} ? true : false>, IsAsync>;
|
|
243
254
|
raw<GenericResult = DefaultReturnObject>(params: RawQueryFetchOne): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
|
|
244
255
|
raw<GenericResult = DefaultReturnObject>(params: RawQueryFetchAll): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
|
|
245
256
|
raw<GenericResult = DefaultReturnObject>(params: RawQueryWithoutFetching): Query<GenericResultWrapper, IsAsync>;
|
|
@@ -255,12 +266,25 @@ declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true>
|
|
|
255
266
|
protected _insert(params: Insert): string;
|
|
256
267
|
protected _update(params: Update): string;
|
|
257
268
|
protected _delete(params: Delete): string;
|
|
258
|
-
protected _select(params: SelectAll): string;
|
|
269
|
+
protected _select(params: SelectAll, queryArgs?: any[]): string;
|
|
259
270
|
protected _fields(value?: string | Array<string>): string;
|
|
260
|
-
protected _where(value
|
|
261
|
-
|
|
271
|
+
protected _where(value: Where | undefined, context?: {
|
|
272
|
+
subQueryPlaceholders?: Record<string, SelectAll>;
|
|
273
|
+
queryArgs: any[];
|
|
274
|
+
toSQLCompiler?: (params: SelectAll, queryArgs: any[]) => string;
|
|
275
|
+
}): string;
|
|
276
|
+
protected _join(value: Join | Array<Join> | undefined, context: {
|
|
277
|
+
subQueryPlaceholders?: Record<string, SelectAll>;
|
|
278
|
+
queryArgs: any[];
|
|
279
|
+
toSQLCompiler: (params: SelectAll, queryArgs: any[]) => string;
|
|
280
|
+
}): string;
|
|
262
281
|
protected _groupBy(value?: string | Array<string>): string;
|
|
263
|
-
protected _having(value
|
|
282
|
+
protected _having(value: Where | undefined, // Using Where type as Having structure is similar for conditions/params
|
|
283
|
+
context: {
|
|
284
|
+
subQueryPlaceholders?: Record<string, SelectAll>;
|
|
285
|
+
queryArgs: any[];
|
|
286
|
+
toSQLCompiler?: (params: SelectAll, queryArgs: any[]) => string;
|
|
287
|
+
}): string;
|
|
264
288
|
protected _orderBy(value?: string | Array<string> | Record<string, string | OrderTypes>): string;
|
|
265
289
|
protected _limit(value?: number): string;
|
|
266
290
|
protected _offset(value?: number): string;
|