workers-qb 1.10.2 → 1.11.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.
package/README.md CHANGED
@@ -54,6 +54,7 @@ workers-qb is a lightweight query builder designed specifically for Cloudflare W
54
54
  - CRUD operations (insert/update/select/delete)
55
55
  - Bulk inserts
56
56
  - JOIN queries
57
+ - Subqueries
57
58
  - Modular SELECT queries
58
59
  - ON CONFLICT handling
59
60
  - UPSERT support
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?: string | Array<string>;
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;
@@ -158,9 +196,15 @@ type D1Result = {
158
196
  duration: number;
159
197
  last_row_id?: string | number;
160
198
  served_by: string;
199
+ rowsRead?: number;
200
+ rowsWritten?: number;
161
201
  meta?: D1Meta;
162
202
  success: boolean;
163
203
  };
204
+ type DOResult = {
205
+ rowsRead: number;
206
+ rowsWritten: number;
207
+ };
164
208
  type PGResult = {
165
209
  command: string;
166
210
  lastRowId?: string | number;
@@ -191,41 +235,6 @@ declare function defaultLogger(query: RawQuery, meta: QueryLoggerMeta): any;
191
235
  declare function asyncLoggerWrapper<Async extends boolean = true>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): Promise<any>;
192
236
  declare function syncLoggerWrapper<Async extends boolean = false>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): any;
193
237
 
194
- interface SelectExecuteOptions {
195
- lazy?: boolean;
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<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
216
- lazy: true;
217
- } ? true : false>, IsAsync>;
218
- getQueryOne(): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
219
- execute<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
220
- lazy: true;
221
- } ? true : false>;
222
- all<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
223
- lazy: true;
224
- } ? true : false>;
225
- one(): MaybeAsync<IsAsync, OneResult<GenericResultWrapper, GenericResult>>;
226
- count(): MaybeAsync<IsAsync, CountResult<GenericResultWrapper>>;
227
- }
228
-
229
238
  declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true> {
230
239
  protected options: QueryBuilderOptions<IsAsync>;
231
240
  loggerWrapper: typeof asyncLoggerWrapper;
@@ -263,12 +272,25 @@ declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true>
263
272
  protected _insert(params: Insert): string;
264
273
  protected _update(params: Update): string;
265
274
  protected _delete(params: Delete): string;
266
- protected _select(params: SelectAll): string;
275
+ protected _select(params: SelectAll, queryArgs?: any[]): string;
267
276
  protected _fields(value?: string | Array<string>): string;
268
- protected _where(value?: Where): string;
269
- protected _join(value?: Join | Array<Join>): string;
277
+ protected _where(value: Where | undefined, context?: {
278
+ subQueryPlaceholders?: Record<string, SelectAll>;
279
+ queryArgs: any[];
280
+ toSQLCompiler?: (params: SelectAll, queryArgs: any[]) => string;
281
+ }): string;
282
+ protected _join(value: Join | Array<Join> | undefined, context: {
283
+ subQueryPlaceholders?: Record<string, SelectAll>;
284
+ queryArgs: any[];
285
+ toSQLCompiler: (params: SelectAll, queryArgs: any[]) => string;
286
+ }): string;
270
287
  protected _groupBy(value?: string | Array<string>): string;
271
- protected _having(value?: string | Array<string>): string;
288
+ protected _having(value: Where | undefined, // Using Where type as Having structure is similar for conditions/params
289
+ context: {
290
+ subQueryPlaceholders?: Record<string, SelectAll>;
291
+ queryArgs: any[];
292
+ toSQLCompiler?: (params: SelectAll, queryArgs: any[]) => string;
293
+ }): string;
272
294
  protected _orderBy(value?: string | Array<string> | Record<string, string | OrderTypes>): string;
273
295
  protected _limit(value?: number): string;
274
296
  protected _offset(value?: number): string;
@@ -309,9 +331,14 @@ declare class asyncMigrationsBuilder<GenericResultWrapper> {
309
331
  apply(): Promise<Array<Migration>>;
310
332
  }
311
333
 
334
+ interface D1Database {
335
+ prepare: any;
336
+ batch: any;
337
+ exec: any;
338
+ }
312
339
  declare class D1QB extends QueryBuilder<D1Result> {
313
340
  db: any;
314
- constructor(db: any, options?: QueryBuilderOptions);
341
+ constructor(db: D1Database, options?: QueryBuilderOptions);
315
342
  migrations(options: MigrationOptions): asyncMigrationsBuilder<D1Result>;
316
343
  execute(query: Query): Promise<any>;
317
344
  batchExecute(queryArray: Query[]): Promise<any>;
@@ -327,13 +354,19 @@ declare class PGQB extends QueryBuilder<PGResult> {
327
354
  execute(query: Query): Promise<any>;
328
355
  }
329
356
 
330
- declare class DOQB extends QueryBuilder<{}, false> {
331
- db: any;
357
+ interface SqlStorage {
358
+ exec: any;
359
+ prepare: any;
360
+ Cursor: any;
361
+ Statement: any;
362
+ }
363
+ declare class DOQB extends QueryBuilder<DOResult, false> {
364
+ db: SqlStorage;
332
365
  loggerWrapper: typeof syncLoggerWrapper;
333
- constructor(db: any, options?: QueryBuilderOptions<false>);
334
- migrations(options: MigrationOptions): syncMigrationsBuilder<{}>;
366
+ constructor(db: SqlStorage, options?: QueryBuilderOptions<false>);
367
+ migrations(options: MigrationOptions): syncMigrationsBuilder<DOResult>;
335
368
  execute(query: Query<any, false>): any;
336
369
  lazyExecute(query: Query<any, false>): Iterable<any>;
337
370
  }
338
371
 
339
- export { type ArrayResult, type AsyncType, ConflictTypes, type ConflictUpsert, type CountResult, type D1Meta, D1QB, type D1Result, DOQB, type DefaultObject, type DefaultReturnObject, type Delete, type DeleteReturning, type DeleteWithoutReturning, FetchTypes, type FullArrayResult, type Insert, type InsertMultiple, type InsertOne, type InsertWithoutReturning, type IterableResult, type Join, JoinTypes, type MaybeAsync, type Migration, type MigrationEntry, type MigrationOptions, type OneResult, OrderTypes, PGQB, type PGResult, type Primitive, Query, QueryBuilder, type QueryBuilderOptions, type QueryLoggerMeta, QueryWithExtra, Raw, type RawQuery, type RawQueryFetchAll, type RawQueryFetchOne, type RawQueryWithoutFetching, type SelectAll, type SelectOne, type SyncType, type Update, type UpdateReturning, type UpdateWithoutReturning, type Where, asyncLoggerWrapper, asyncMigrationsBuilder, defaultLogger, syncLoggerWrapper, syncMigrationsBuilder, type test, trimQuery };
372
+ export { type ArrayResult, type AsyncType, ConflictTypes, type ConflictUpsert, type CountResult, type D1Meta, D1QB, type D1Result, DOQB, type DOResult, type DefaultObject, type DefaultReturnObject, type Delete, type DeleteReturning, type DeleteWithoutReturning, FetchTypes, type FullArrayResult, type Insert, type InsertMultiple, type InsertOne, type InsertWithoutReturning, type IterableResult, type Join, JoinTypes, type MaybeAsync, type Migration, type MigrationEntry, type MigrationOptions, type OneResult, OrderTypes, PGQB, type PGResult, type Primitive, Query, QueryBuilder, type QueryBuilderOptions, type QueryLoggerMeta, QueryWithExtra, Raw, type RawQuery, type RawQueryFetchAll, type RawQueryFetchOne, type RawQueryWithoutFetching, type SelectAll, type SelectOne, type SyncType, type Update, type UpdateReturning, type UpdateWithoutReturning, type Where, asyncLoggerWrapper, asyncMigrationsBuilder, defaultLogger, syncLoggerWrapper, syncMigrationsBuilder, type test, trimQuery };
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?: string | Array<string>;
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;
@@ -158,9 +196,15 @@ type D1Result = {
158
196
  duration: number;
159
197
  last_row_id?: string | number;
160
198
  served_by: string;
199
+ rowsRead?: number;
200
+ rowsWritten?: number;
161
201
  meta?: D1Meta;
162
202
  success: boolean;
163
203
  };
204
+ type DOResult = {
205
+ rowsRead: number;
206
+ rowsWritten: number;
207
+ };
164
208
  type PGResult = {
165
209
  command: string;
166
210
  lastRowId?: string | number;
@@ -191,41 +235,6 @@ declare function defaultLogger(query: RawQuery, meta: QueryLoggerMeta): any;
191
235
  declare function asyncLoggerWrapper<Async extends boolean = true>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): Promise<any>;
192
236
  declare function syncLoggerWrapper<Async extends boolean = false>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): any;
193
237
 
194
- interface SelectExecuteOptions {
195
- lazy?: boolean;
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<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
216
- lazy: true;
217
- } ? true : false>, IsAsync>;
218
- getQueryOne(): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
219
- execute<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
220
- lazy: true;
221
- } ? true : false>;
222
- all<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
223
- lazy: true;
224
- } ? true : false>;
225
- one(): MaybeAsync<IsAsync, OneResult<GenericResultWrapper, GenericResult>>;
226
- count(): MaybeAsync<IsAsync, CountResult<GenericResultWrapper>>;
227
- }
228
-
229
238
  declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true> {
230
239
  protected options: QueryBuilderOptions<IsAsync>;
231
240
  loggerWrapper: typeof asyncLoggerWrapper;
@@ -263,12 +272,25 @@ declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true>
263
272
  protected _insert(params: Insert): string;
264
273
  protected _update(params: Update): string;
265
274
  protected _delete(params: Delete): string;
266
- protected _select(params: SelectAll): string;
275
+ protected _select(params: SelectAll, queryArgs?: any[]): string;
267
276
  protected _fields(value?: string | Array<string>): string;
268
- protected _where(value?: Where): string;
269
- protected _join(value?: Join | Array<Join>): string;
277
+ protected _where(value: Where | undefined, context?: {
278
+ subQueryPlaceholders?: Record<string, SelectAll>;
279
+ queryArgs: any[];
280
+ toSQLCompiler?: (params: SelectAll, queryArgs: any[]) => string;
281
+ }): string;
282
+ protected _join(value: Join | Array<Join> | undefined, context: {
283
+ subQueryPlaceholders?: Record<string, SelectAll>;
284
+ queryArgs: any[];
285
+ toSQLCompiler: (params: SelectAll, queryArgs: any[]) => string;
286
+ }): string;
270
287
  protected _groupBy(value?: string | Array<string>): string;
271
- protected _having(value?: string | Array<string>): string;
288
+ protected _having(value: Where | undefined, // Using Where type as Having structure is similar for conditions/params
289
+ context: {
290
+ subQueryPlaceholders?: Record<string, SelectAll>;
291
+ queryArgs: any[];
292
+ toSQLCompiler?: (params: SelectAll, queryArgs: any[]) => string;
293
+ }): string;
272
294
  protected _orderBy(value?: string | Array<string> | Record<string, string | OrderTypes>): string;
273
295
  protected _limit(value?: number): string;
274
296
  protected _offset(value?: number): string;
@@ -309,9 +331,14 @@ declare class asyncMigrationsBuilder<GenericResultWrapper> {
309
331
  apply(): Promise<Array<Migration>>;
310
332
  }
311
333
 
334
+ interface D1Database {
335
+ prepare: any;
336
+ batch: any;
337
+ exec: any;
338
+ }
312
339
  declare class D1QB extends QueryBuilder<D1Result> {
313
340
  db: any;
314
- constructor(db: any, options?: QueryBuilderOptions);
341
+ constructor(db: D1Database, options?: QueryBuilderOptions);
315
342
  migrations(options: MigrationOptions): asyncMigrationsBuilder<D1Result>;
316
343
  execute(query: Query): Promise<any>;
317
344
  batchExecute(queryArray: Query[]): Promise<any>;
@@ -327,13 +354,19 @@ declare class PGQB extends QueryBuilder<PGResult> {
327
354
  execute(query: Query): Promise<any>;
328
355
  }
329
356
 
330
- declare class DOQB extends QueryBuilder<{}, false> {
331
- db: any;
357
+ interface SqlStorage {
358
+ exec: any;
359
+ prepare: any;
360
+ Cursor: any;
361
+ Statement: any;
362
+ }
363
+ declare class DOQB extends QueryBuilder<DOResult, false> {
364
+ db: SqlStorage;
332
365
  loggerWrapper: typeof syncLoggerWrapper;
333
- constructor(db: any, options?: QueryBuilderOptions<false>);
334
- migrations(options: MigrationOptions): syncMigrationsBuilder<{}>;
366
+ constructor(db: SqlStorage, options?: QueryBuilderOptions<false>);
367
+ migrations(options: MigrationOptions): syncMigrationsBuilder<DOResult>;
335
368
  execute(query: Query<any, false>): any;
336
369
  lazyExecute(query: Query<any, false>): Iterable<any>;
337
370
  }
338
371
 
339
- export { type ArrayResult, type AsyncType, ConflictTypes, type ConflictUpsert, type CountResult, type D1Meta, D1QB, type D1Result, DOQB, type DefaultObject, type DefaultReturnObject, type Delete, type DeleteReturning, type DeleteWithoutReturning, FetchTypes, type FullArrayResult, type Insert, type InsertMultiple, type InsertOne, type InsertWithoutReturning, type IterableResult, type Join, JoinTypes, type MaybeAsync, type Migration, type MigrationEntry, type MigrationOptions, type OneResult, OrderTypes, PGQB, type PGResult, type Primitive, Query, QueryBuilder, type QueryBuilderOptions, type QueryLoggerMeta, QueryWithExtra, Raw, type RawQuery, type RawQueryFetchAll, type RawQueryFetchOne, type RawQueryWithoutFetching, type SelectAll, type SelectOne, type SyncType, type Update, type UpdateReturning, type UpdateWithoutReturning, type Where, asyncLoggerWrapper, asyncMigrationsBuilder, defaultLogger, syncLoggerWrapper, syncMigrationsBuilder, type test, trimQuery };
372
+ export { type ArrayResult, type AsyncType, ConflictTypes, type ConflictUpsert, type CountResult, type D1Meta, D1QB, type D1Result, DOQB, type DOResult, type DefaultObject, type DefaultReturnObject, type Delete, type DeleteReturning, type DeleteWithoutReturning, FetchTypes, type FullArrayResult, type Insert, type InsertMultiple, type InsertOne, type InsertWithoutReturning, type IterableResult, type Join, JoinTypes, type MaybeAsync, type Migration, type MigrationEntry, type MigrationOptions, type OneResult, OrderTypes, PGQB, type PGResult, type Primitive, Query, QueryBuilder, type QueryBuilderOptions, type QueryLoggerMeta, QueryWithExtra, Raw, type RawQuery, type RawQueryFetchAll, type RawQueryFetchOne, type RawQueryWithoutFetching, type SelectAll, type SelectOne, type SyncType, type Update, type UpdateReturning, type UpdateWithoutReturning, type Where, asyncLoggerWrapper, asyncMigrationsBuilder, defaultLogger, syncLoggerWrapper, syncMigrationsBuilder, type test, trimQuery };