bun-query-builder 0.1.25 → 0.1.27

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.
@@ -370,4 +370,44 @@ export type RelationCardinality<TModel, R extends string> = ResolveDefinition<TM
370
370
  | (TDef extends { belongsToMany: Readonly<Record<infer K, unknown>> }
371
371
  ? K extends string ? K extends R ? 'many' : never : never
372
372
  : never)
373
+ // hasOneThrough array syntax ({ model } entries)
374
+ | (TDef extends { hasOneThrough: readonly (infer M)[] }
375
+ ? M extends string
376
+ ? Lowercase<M> extends R ? 'one' : never
377
+ : M extends { model: infer N extends string }
378
+ ? Lowercase<N> extends R ? 'one' : never
379
+ : never
380
+ : never)
381
+ // hasOneThrough object syntax
382
+ | (TDef extends { hasOneThrough: Readonly<Record<infer K, unknown>> }
383
+ ? K extends string ? K extends R ? 'one' : never : never
384
+ : never)
385
+ // hasManyThrough array syntax ({ model } entries)
386
+ | (TDef extends { hasManyThrough: readonly (infer M)[] }
387
+ ? M extends string
388
+ ? Lowercase<M> extends R ? 'many' : never
389
+ : M extends { model: infer N extends string }
390
+ ? Lowercase<N> extends R ? 'many' : never
391
+ : never
392
+ : never)
393
+ // hasManyThrough object syntax
394
+ | (TDef extends { hasManyThrough: Readonly<Record<infer K, unknown>> }
395
+ ? K extends string ? K extends R ? 'many' : never : never
396
+ : never)
397
+ // morphOne object syntax
398
+ | (TDef extends { morphOne: Readonly<Record<infer K, unknown>> }
399
+ ? K extends string ? K extends R ? 'one' : never : never
400
+ : never)
401
+ // morphMany object syntax
402
+ | (TDef extends { morphMany: Readonly<Record<infer K, unknown>> }
403
+ ? K extends string ? K extends R ? 'many' : never : never
404
+ : never)
405
+ // morphToMany object syntax
406
+ | (TDef extends { morphToMany: Readonly<Record<infer K, unknown>> }
407
+ ? K extends string ? K extends R ? 'many' : never : never
408
+ : never)
409
+ // morphedByMany object syntax
410
+ | (TDef extends { morphedByMany: Readonly<Record<infer K, unknown>> }
411
+ ? K extends string ? K extends R ? 'many' : never : never
412
+ : never)
373
413
  : never;
package/dist/types.d.ts CHANGED
@@ -126,6 +126,8 @@ export declare interface QueryHooks {
126
126
  onQueryEnd?: (event: { sql: string, params?: any[], durationMs: number, rowCount?: number, kind?: 'select' | 'insert' | 'update' | 'delete' | 'raw' }) => void
127
127
  onQueryError?: (event: { sql: string, params?: any[], error: any, durationMs: number, kind?: 'select' | 'insert' | 'update' | 'delete' | 'raw' }) => void
128
128
  startSpan?: (event: { sql: string, params?: any[], kind?: 'select' | 'insert' | 'update' | 'delete' | 'raw' }) => { end: (error?: any) => void }
129
+ slowQueryThresholdMs?: number
130
+ onSlowQuery?: (event: { sql: string, params?: any[], durationMs: number, kind?: 'select' | 'insert' | 'update' | 'delete' | 'raw' }) => void
129
131
  beforeCreate?: (event: { table: string, data: any }) => void | Promise<void>
130
132
  afterCreate?: (event: { table: string, data: any, result: any }) => void | Promise<void>
131
133
  beforeUpdate?: (event: { table: string, data: any, where?: any }) => void | Promise<void>
@@ -143,6 +145,24 @@ export declare interface QueryHooks {
143
145
  export declare interface FeatureToggles {
144
146
  distinctOn: boolean
145
147
  }
148
+ /**
149
+ * Connection-pool tuning for the underlying Bun SQL driver (Postgres/MySQL).
150
+ *
151
+ * All fields are optional and only apply to the network drivers — SQLite uses
152
+ * a single `bun:sqlite` handle and ignores pool settings. Timeouts are given in
153
+ * milliseconds here for ergonomics and converted to the driver's second
154
+ * resolution at connect time (sub-second values are rounded).
155
+ *
156
+ * See stacksjs/bun-query-builder#1014.
157
+ */
158
+ export declare interface PoolConfig {
159
+ max?: number
160
+ idleTimeoutMs?: number
161
+ acquireTimeoutMs?: number
162
+ maxLifetimeMs?: number
163
+ min?: number
164
+ autoReconnect?: boolean
165
+ }
146
166
  export declare interface DatabaseConfig {
147
167
  database: string
148
168
  username: string
@@ -150,6 +170,7 @@ export declare interface DatabaseConfig {
150
170
  host: string
151
171
  url?: string
152
172
  port: number
173
+ pool?: PoolConfig
153
174
  }
154
175
  /**
155
176
  * # `BrowserConfig`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bun-query-builder",
3
3
  "type": "module",
4
- "version": "0.1.25",
4
+ "version": "0.1.27",
5
5
  "description": "A simple yet performant query builder for TypeScript. Built with Bun.",
6
6
  "author": "Chris Breuer <chris@stacksjs.org>",
7
7
  "license": "MIT",