workers-qb 1.11.1 → 1.12.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 CHANGED
@@ -35,18 +35,18 @@ workers-qb is a lightweight query builder designed specifically for Cloudflare W
35
35
 
36
36
  ## Supported Databases
37
37
 
38
- - ☁️ [Cloudflare D1](https://workers-qb.massadas.com/databases/cloudflare-d1/)
39
- - 💾 [Cloudflare Durable Objects](https://workers-qb.massadas.com/databases/cloudflare-do/)
38
+ - ☁️ [Cloudflare D1](https://workers-qb.massadas.com/databases/d1/)
39
+ - 💾 [Cloudflare Durable Objects](https://workers-qb.massadas.com/databases/do/)
40
40
  - 🐘 [PostgreSQL (via node-postgres)](https://workers-qb.massadas.com/databases/postgresql/)
41
- - 🔌 [Bring Your Own Database](https://workers-qb.massadas.com/databases/bring-your-own-database/)
41
+ - 🔌 [Bring Your Own Database](https://workers-qb.massadas.com/databases/byodb/)
42
42
 
43
43
  ## Features
44
44
 
45
45
  ### Core Features
46
46
  - Zero dependencies
47
47
  - Full TypeScript support
48
+ - Schema-aware type inference with autocomplete
48
49
  - Database schema migrations
49
- - Type checking for data reads
50
50
  - Lazy row loading
51
51
 
52
52
  ### Query Operations
@@ -110,6 +110,39 @@ export default {
110
110
  }
111
111
  ```
112
112
 
113
+ ### Schema-Aware Type Inference
114
+
115
+ Define your database schema once and get autocomplete for table names, column names, and automatic result type inference:
116
+
117
+ ```typescript
118
+ import { D1QB } from 'workers-qb'
119
+
120
+ // Define your schema
121
+ type Schema = {
122
+ employees: {
123
+ id: number
124
+ name: string
125
+ role: string
126
+ active: boolean
127
+ }
128
+ }
129
+
130
+ // Initialize with schema type
131
+ const qb = new D1QB<Schema>(env.DB)
132
+
133
+ // Get full autocomplete and type inference
134
+ const employees = await qb.fetchAll({
135
+ tableName: 'employees', // Autocomplete: 'employees'
136
+ fields: ['id', 'name'], // Autocomplete: 'id' | 'name' | 'role' | 'active'
137
+ orderBy: { name: 'ASC' }, // Keys autocomplete to column names
138
+ }).execute()
139
+
140
+ // Result type is automatically inferred as { id: number; name: string }[]
141
+ employees.results?.forEach(emp => {
142
+ console.log(emp.id, emp.name) // Fully typed!
143
+ })
144
+ ```
145
+
113
146
  ### Cloudflare Durable Objects
114
147
 
115
148
  ```typescript
package/dist/index.d.mts CHANGED
@@ -19,6 +19,73 @@ declare enum JoinTypes {
19
19
  CROSS = "CROSS"
20
20
  }
21
21
 
22
+ /**
23
+ * Schema-aware type utilities for type-safe query building.
24
+ *
25
+ * Define your database schema as a type and pass it to the query builder
26
+ * to get autocomplete for table names, column names, and inferred result types.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * type Schema = {
31
+ * users: {
32
+ * id: number
33
+ * name: string
34
+ * email: string
35
+ * }
36
+ * posts: {
37
+ * id: number
38
+ * user_id: number
39
+ * title: string
40
+ * }
41
+ * }
42
+ *
43
+ * const qb = new D1QB<Schema>(env.DB)
44
+ *
45
+ * // Now get autocomplete for tableName, fields, orderBy, etc.
46
+ * const users = await qb.fetchAll({
47
+ * tableName: 'users', // autocomplete: 'users' | 'posts'
48
+ * fields: ['id', 'name'], // autocomplete: 'id' | 'name' | 'email'
49
+ * }).execute()
50
+ * ```
51
+ */
52
+ /**
53
+ * Base type for database schemas.
54
+ * A schema is a record of table names to their column types.
55
+ */
56
+ type TableSchema = Record<string, Record<string, unknown>>;
57
+ /**
58
+ * Extract table names from a schema.
59
+ */
60
+ type TableName<S extends TableSchema> = keyof S & string;
61
+ /**
62
+ * Extract column names for a specific table.
63
+ */
64
+ type ColumnName<S extends TableSchema, T extends TableName<S>> = keyof S[T] & string;
65
+ /**
66
+ * Pick specific columns from a table's type.
67
+ */
68
+ type SelectColumns<S extends TableSchema, T extends TableName<S>, F extends ColumnName<S, T>> = Pick<S[T], F>;
69
+ /**
70
+ * Type for INSERT data - all columns are optional to allow partial inserts.
71
+ * In practice, required columns will be enforced by the database.
72
+ */
73
+ type InsertData<S extends TableSchema, T extends TableName<S>> = Partial<S[T]>;
74
+ /**
75
+ * Type for UPDATE data - all columns are optional.
76
+ */
77
+ type UpdateData<S extends TableSchema, T extends TableName<S>> = Partial<S[T]>;
78
+ /**
79
+ * Helper to check if a schema is empty (for backwards compatibility).
80
+ * When Schema = {}, we fall back to loose types.
81
+ */
82
+ type IsEmptySchema<S extends TableSchema> = keyof S extends never ? true : false;
83
+ /**
84
+ * Conditional type that returns strict types when schema is provided,
85
+ * or loose types when schema is empty.
86
+ */
87
+ type SchemaAware<S extends TableSchema, Strict, Loose> = IsEmptySchema<S> extends true ? Loose : Strict;
88
+
22
89
  declare class Raw {
23
90
  isRaw: boolean;
24
91
  content: any;
@@ -43,24 +110,24 @@ declare function trimQuery(query: string): string;
43
110
  interface SelectExecuteOptions {
44
111
  lazy?: boolean;
45
112
  }
46
- declare class SelectBuilder<GenericResultWrapper, GenericResult = DefaultReturnObject, IsAsync extends boolean = true> {
113
+ declare class SelectBuilder<Schema extends TableSchema = {}, GenericResultWrapper = unknown, GenericResult = DefaultReturnObject, IsAsync extends boolean = true> {
47
114
  _debugger: boolean;
48
115
  _options: Partial<SelectAll>;
49
116
  _fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
50
117
  _fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>;
51
118
  constructor(options: Partial<SelectAll>, fetchAll: (params: SelectAll) => QueryWithExtra<GenericResultWrapper, any, IsAsync>, fetchOne: (params: SelectOne) => QueryWithExtra<GenericResultWrapper, any, IsAsync>);
52
119
  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>;
120
+ tableName(tableName: SelectAll['tableName']): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
121
+ fields(fields: SelectAll['fields']): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
122
+ where(conditions: string | Array<string>, params?: Primitive | Primitive[]): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
123
+ whereIn<T extends string | Array<string>, P extends T extends Array<string> ? Primitive[][] : Primitive[]>(fields: T, values: P): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
124
+ join(join: SelectAll['join']): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
125
+ groupBy(groupBy: SelectAll['groupBy']): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
126
+ having(conditions: string | Array<string>, params?: Primitive | Primitive[]): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
127
+ orderBy(orderBy: SelectAll['orderBy']): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
128
+ offset(offset: SelectAll['offset']): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
129
+ limit(limit: SelectAll['limit']): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
130
+ _parseArray(fieldName: string, option: any, value: any): SelectBuilder<Schema, GenericResultWrapper, GenericResult, IsAsync>;
64
131
  getQueryAll<P extends SelectExecuteOptions = SelectExecuteOptions>(options?: P): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
65
132
  lazy: true;
66
133
  } ? true : false>, IsAsync>;
@@ -90,7 +157,7 @@ type SimpleMerge<Destination, Source> = {
90
157
  } & Source;
91
158
  type Merge<Destination, Source> = Simplify<SimpleMerge<PickIndexSignature<Destination>, PickIndexSignature<Source>> & SimpleMerge<OmitIndexSignature<Destination>, OmitIndexSignature<Source>>>;
92
159
 
93
- type Primitive = null | string | number | boolean | bigint | Raw | SelectAll | SelectBuilder<any, any, any>;
160
+ type Primitive = null | string | number | boolean | bigint | ArrayBuffer | Raw | SelectAll | SelectBuilder<any, any, any>;
94
161
  type QueryLoggerMeta = {
95
162
  duration?: number;
96
163
  };
@@ -98,7 +165,7 @@ type QueryBuilderOptions<IsAsync extends boolean = true> = {
98
165
  logger?: (query: RawQuery, meta: QueryLoggerMeta) => MaybeAsync<IsAsync, void>;
99
166
  };
100
167
  type DefaultObject = Record<string, Primitive>;
101
- type DefaultReturnObject = Record<string, null | string | number | boolean | bigint>;
168
+ type DefaultReturnObject = Record<string, null | string | number | boolean | bigint | ArrayBuffer>;
102
169
  type Where = {
103
170
  conditions: string | Array<string>;
104
171
  params?: Primitive | Primitive[];
@@ -157,7 +224,6 @@ type InsertMultiple = Omit<Insert, 'data' | 'returning'> & {
157
224
  returning: string | Array<string>;
158
225
  };
159
226
  type InsertWithoutReturning = Omit<Insert, 'returning'>;
160
- type test<I extends Insert = Insert> = I;
161
227
  type Update = {
162
228
  tableName: string;
163
229
  data: DefaultObject;
@@ -230,12 +296,69 @@ type CountResult<GenericResultWrapper> = OneResult<GenericResultWrapper, {
230
296
  type AsyncType<T> = Promise<T>;
231
297
  type SyncType<T> = T;
232
298
  type MaybeAsync<IsAsync extends boolean, T> = IsAsync extends true ? AsyncType<T> : SyncType<T>;
299
+ /**
300
+ * Schema-aware SELECT parameters.
301
+ * When a schema is provided, tableName and fields get autocomplete.
302
+ */
303
+ type TypedSelectOne<S extends TableSchema, T extends TableName<S>, F extends ColumnName<S, T> = ColumnName<S, T>> = {
304
+ tableName: T;
305
+ fields?: F[] | F | '*';
306
+ where?: Where;
307
+ join?: Join | Array<Join>;
308
+ groupBy?: ColumnName<S, T> | ColumnName<S, T>[] | string | string[];
309
+ having?: Where;
310
+ orderBy?: Partial<Record<ColumnName<S, T>, OrderTypes | string>> | string | string[];
311
+ offset?: number;
312
+ };
313
+ /**
314
+ * Schema-aware SELECT ALL parameters (includes limit and lazy).
315
+ */
316
+ type TypedSelectAll<S extends TableSchema, T extends TableName<S>, F extends ColumnName<S, T> = ColumnName<S, T>> = TypedSelectOne<S, T, F> & {
317
+ limit?: number;
318
+ lazy?: boolean;
319
+ };
320
+ /**
321
+ * Schema-aware INSERT parameters.
322
+ */
323
+ type TypedInsert<S extends TableSchema, T extends TableName<S>> = {
324
+ tableName: T;
325
+ data: Partial<S[T]> | Array<Partial<S[T]>>;
326
+ returning?: ColumnName<S, T>[] | ColumnName<S, T> | '*';
327
+ onConflict?: string | ConflictTypes | ConflictUpsert;
328
+ };
329
+ /**
330
+ * Schema-aware UPDATE parameters.
331
+ */
332
+ type TypedUpdate<S extends TableSchema, T extends TableName<S>> = {
333
+ tableName: T;
334
+ data: Partial<S[T]>;
335
+ where?: Where;
336
+ returning?: ColumnName<S, T>[] | ColumnName<S, T> | '*';
337
+ onConflict?: string | ConflictTypes;
338
+ };
339
+ /**
340
+ * Schema-aware DELETE parameters.
341
+ */
342
+ type TypedDelete<S extends TableSchema, T extends TableName<S>> = {
343
+ tableName: T;
344
+ where: Where;
345
+ returning?: ColumnName<S, T>[] | ColumnName<S, T> | '*';
346
+ orderBy?: Partial<Record<ColumnName<S, T>, OrderTypes | string>> | string | string[];
347
+ limit?: number;
348
+ offset?: number;
349
+ };
350
+ /**
351
+ * Infer the result type based on selected fields.
352
+ * If fields is '*' or undefined, returns full table type.
353
+ * If fields is an array, returns Pick of those fields.
354
+ */
355
+ type InferResult<S extends TableSchema, T extends TableName<S>, F> = F extends '*' ? S[T] : F extends ColumnName<S, T>[] ? Pick<S[T], F[number]> : F extends ColumnName<S, T> ? Pick<S[T], F> : S[T];
233
356
 
234
357
  declare function defaultLogger(query: RawQuery, meta: QueryLoggerMeta): any;
235
358
  declare function asyncLoggerWrapper<Async extends boolean = true>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): Promise<any>;
236
359
  declare function syncLoggerWrapper<Async extends boolean = false>(query: Query<any, Async> | Query<any, Async>[], loggerFunction: CallableFunction | undefined, innerFunction: () => any): any;
237
360
 
238
- declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true> {
361
+ declare class QueryBuilder<Schema extends TableSchema = {}, GenericResultWrapper = unknown, IsAsync extends boolean = true> {
239
362
  protected options: QueryBuilderOptions<IsAsync>;
240
363
  loggerWrapper: typeof asyncLoggerWrapper;
241
364
  constructor(options?: QueryBuilderOptions<IsAsync>);
@@ -252,19 +375,27 @@ declare class QueryBuilder<GenericResultWrapper, IsAsync extends boolean = true>
252
375
  tableName: string;
253
376
  ifExists?: boolean;
254
377
  }): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
255
- select<GenericResult = DefaultReturnObject>(tableName: string): SelectBuilder<GenericResultWrapper, GenericResult, IsAsync>;
378
+ select<T extends TableName<Schema>>(tableName: T): SelectBuilder<Schema, GenericResultWrapper, Schema[T], IsAsync>;
379
+ select<GenericResult = DefaultReturnObject>(tableName: string): SelectBuilder<{}, GenericResultWrapper, GenericResult, IsAsync>;
380
+ fetchOne<T extends TableName<Schema>, F extends ColumnName<Schema, T> = ColumnName<Schema, T>>(params: TypedSelectOne<Schema, T, F>): QueryWithExtra<GenericResultWrapper, OneResult<GenericResultWrapper, InferResult<Schema, T, F[] | undefined>>, IsAsync>;
256
381
  fetchOne<GenericResult = DefaultReturnObject>(params: SelectOne): QueryWithExtra<GenericResultWrapper, OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
382
+ fetchAll<T extends TableName<Schema>, F extends ColumnName<Schema, T> = ColumnName<Schema, T>, P extends TypedSelectAll<Schema, T, F> = TypedSelectAll<Schema, T, F>>(params: P): QueryWithExtra<GenericResultWrapper, ArrayResult<GenericResultWrapper, InferResult<Schema, T, F[] | undefined>, IsAsync, P extends {
383
+ lazy: true;
384
+ } ? true : false>, IsAsync>;
257
385
  fetchAll<GenericResult = DefaultReturnObject, P extends SelectAll = SelectAll>(params: P): QueryWithExtra<GenericResultWrapper, ArrayResult<GenericResultWrapper, GenericResult, IsAsync, P extends {
258
386
  lazy: true;
259
387
  } ? true : false>, IsAsync>;
260
388
  raw<GenericResult = DefaultReturnObject>(params: RawQueryFetchOne): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
261
389
  raw<GenericResult = DefaultReturnObject>(params: RawQueryFetchAll): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
262
390
  raw<GenericResult = DefaultReturnObject>(params: RawQueryWithoutFetching): Query<GenericResultWrapper, IsAsync>;
391
+ insert<T extends TableName<Schema>>(params: TypedInsert<Schema, T>): Query<GenericResultWrapper, IsAsync>;
263
392
  insert<GenericResult = DefaultReturnObject>(params: InsertOne): Query<OneResult<GenericResultWrapper, GenericResult>, IsAsync>;
264
393
  insert<GenericResult = DefaultReturnObject>(params: InsertMultiple): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
265
394
  insert<GenericResult = DefaultReturnObject>(params: InsertWithoutReturning): Query<GenericResultWrapper, IsAsync>;
395
+ update<T extends TableName<Schema>>(params: TypedUpdate<Schema, T>): Query<GenericResultWrapper, IsAsync>;
266
396
  update<GenericResult = DefaultReturnObject>(params: UpdateReturning): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
267
397
  update<GenericResult = DefaultReturnObject>(params: UpdateWithoutReturning): Query<GenericResultWrapper, IsAsync>;
398
+ delete<T extends TableName<Schema>>(params: TypedDelete<Schema, T>): Query<GenericResultWrapper, IsAsync>;
268
399
  delete<GenericResult = DefaultReturnObject>(params: DeleteReturning): Query<ArrayResult<GenericResultWrapper, GenericResult, IsAsync>, IsAsync>;
269
400
  delete<GenericResult = DefaultReturnObject>(params: DeleteWithoutReturning): Query<GenericResultWrapper, IsAsync>;
270
401
  protected _parse_arguments(row: DefaultObject): Array<any>;
@@ -311,20 +442,20 @@ type MigrationOptions = {
311
442
  tableName?: string;
312
443
  };
313
444
  declare class syncMigrationsBuilder<GenericResultWrapper> {
314
- _builder: QueryBuilder<GenericResultWrapper, false>;
445
+ _builder: QueryBuilder<any, GenericResultWrapper, false>;
315
446
  _migrations: Array<Migration>;
316
447
  _tableName: string;
317
- constructor(options: MigrationOptions, builder: QueryBuilder<GenericResultWrapper, false>);
448
+ constructor(options: MigrationOptions, builder: QueryBuilder<any, GenericResultWrapper, false>);
318
449
  initialize(): void;
319
450
  getApplied(): Array<MigrationEntry>;
320
451
  getUnapplied(): Array<Migration>;
321
452
  apply(): Array<Migration>;
322
453
  }
323
454
  declare class asyncMigrationsBuilder<GenericResultWrapper> {
324
- _builder: QueryBuilder<GenericResultWrapper, true>;
455
+ _builder: QueryBuilder<any, GenericResultWrapper, true>;
325
456
  _migrations: Array<Migration>;
326
457
  _tableName: string;
327
- constructor(options: MigrationOptions, builder: QueryBuilder<GenericResultWrapper, true>);
458
+ constructor(options: MigrationOptions, builder: QueryBuilder<any, GenericResultWrapper, true>);
328
459
  initialize(): Promise<void>;
329
460
  getApplied(): Promise<Array<MigrationEntry>>;
330
461
  getUnapplied(): Promise<Array<Migration>>;
@@ -336,7 +467,7 @@ interface D1Database {
336
467
  batch: any;
337
468
  exec: any;
338
469
  }
339
- declare class D1QB extends QueryBuilder<D1Result> {
470
+ declare class D1QB<Schema extends TableSchema = {}> extends QueryBuilder<Schema, D1Result, true> {
340
471
  db: any;
341
472
  constructor(db: D1Database, options?: QueryBuilderOptions);
342
473
  migrations(options: MigrationOptions): asyncMigrationsBuilder<D1Result>;
@@ -344,23 +475,13 @@ declare class D1QB extends QueryBuilder<D1Result> {
344
475
  batchExecute(queryArray: Query[]): Promise<any>;
345
476
  }
346
477
 
347
- declare class PGQB extends QueryBuilder<PGResult> {
348
- db: any;
349
- _migrationsBuilder: typeof asyncMigrationsBuilder;
350
- constructor(db: any, options?: QueryBuilderOptions);
351
- migrations(options: MigrationOptions): asyncMigrationsBuilder<PGResult>;
352
- connect(): Promise<void>;
353
- close(): Promise<void>;
354
- execute(query: Query): Promise<any>;
355
- }
356
-
357
478
  interface SqlStorage {
358
479
  exec: any;
359
- prepare: any;
480
+ get databaseSize(): number;
360
481
  Cursor: any;
361
482
  Statement: any;
362
483
  }
363
- declare class DOQB extends QueryBuilder<DOResult, false> {
484
+ declare class DOQB<Schema extends TableSchema = {}> extends QueryBuilder<Schema, DOResult, false> {
364
485
  db: SqlStorage;
365
486
  loggerWrapper: typeof syncLoggerWrapper;
366
487
  constructor(db: SqlStorage, options?: QueryBuilderOptions<false>);
@@ -369,4 +490,14 @@ declare class DOQB extends QueryBuilder<DOResult, false> {
369
490
  lazyExecute(query: Query<any, false>): Iterable<any>;
370
491
  }
371
492
 
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 };
493
+ declare class PGQB<Schema extends TableSchema = {}> extends QueryBuilder<Schema, PGResult, true> {
494
+ db: any;
495
+ _migrationsBuilder: typeof asyncMigrationsBuilder;
496
+ constructor(db: any, options?: QueryBuilderOptions);
497
+ migrations(options: MigrationOptions): asyncMigrationsBuilder<PGResult>;
498
+ connect(): Promise<void>;
499
+ close(): Promise<void>;
500
+ execute(query: Query): Promise<any>;
501
+ }
502
+
503
+ export { type ArrayResult, type AsyncType, type ColumnName, 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 InferResult, type Insert, type InsertData, type InsertMultiple, type InsertOne, type InsertWithoutReturning, type IsEmptySchema, 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 SchemaAware, type SelectAll, type SelectColumns, type SelectOne, type SyncType, type TableName, type TableSchema, type TypedDelete, type TypedInsert, type TypedSelectAll, type TypedSelectOne, type TypedUpdate, type Update, type UpdateData, type UpdateReturning, type UpdateWithoutReturning, type Where, asyncLoggerWrapper, asyncMigrationsBuilder, defaultLogger, syncLoggerWrapper, syncMigrationsBuilder, trimQuery };