bun-query-builder 0.2.39 → 0.2.41

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/dist/bin/cli.js CHANGED
@@ -32354,7 +32354,7 @@ function getPrefix() {
32354
32354
  }
32355
32355
  var prefix = getPrefix();
32356
32356
  // package.json
32357
- var version2 = "0.2.39";
32357
+ var version2 = "0.2.41";
32358
32358
 
32359
32359
  // bin/cli.ts
32360
32360
  init_actions();
package/dist/orm.d.ts CHANGED
@@ -199,6 +199,11 @@ declare interface StaticWhereOverloads<TDef extends ModelDefinition> {
199
199
  column: K,
200
200
  value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown
201
201
  ): ModelQueryBuilder<TDef>
202
+ where<K extends ColumnName<TDef>>(
203
+ column: K,
204
+ operator: 'in' | 'not in',
205
+ value: ReadonlyArray<K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown>
206
+ ): ModelQueryBuilder<TDef>
202
207
  where<K extends ColumnName<TDef>>(
203
208
  column: K,
204
209
  operator: WhereOperator,
@@ -357,10 +362,34 @@ declare type FillableKeys<TDef extends ModelDefinition> = {
357
362
  * from `attributes`, so without this every such create was a type error
358
363
  * against the one column the relation exists to set.
359
364
  */
360
- declare type FillableAttributes<TDef extends ModelDefinition> = Partial<Pick<
361
- ModelAttributes<TDef>,
365
+ /**
366
+ * What `create` / `update` accept.
367
+ *
368
+ * `null` is allowed alongside each column's own type because a write is how a
369
+ * nullable column gets CLEARED, and that is a different instruction from
370
+ * leaving the field out. Without it, a caller assembling an update payload -
371
+ * `{ subject: form.subject ?? null }` is the ordinary shape - had to choose
372
+ * between a type error and `undefined`, and `undefined` silently means "do not
373
+ * touch this column", so the field the user cleared stayed as it was.
374
+ *
375
+ * The database's own nullability is still the authority: writing null to a NOT
376
+ * NULL column fails there, as it should.
377
+ */
378
+ type FillableAttributes<TDef extends ModelDefinition> = Partial<Pick<
379
+ {
380
+ [K in keyof ModelAttributes<TDef>]:
381
+ // Already nullable: nothing to add.
382
+ null extends ModelAttributes<TDef>[K]
383
+ ? ModelAttributes<TDef>[K]
384
+ // Optional, so the column is nullable in the database: `null` is how a
385
+ // write CLEARS it, which is different from omitting the key.
386
+ : undefined extends ModelAttributes<TDef>[K]
387
+ ? ModelAttributes<TDef>[K] | null
388
+ // Required: null stays rejected, as the NOT NULL column would reject it.
389
+ : ModelAttributes<TDef>[K]
390
+ },
362
391
  FillableKeys<TDef> | SnakeCase<FillableKeys<TDef>> | BelongsToKeys<TDef>
363
- >>;
392
+ >>
364
393
  // Numeric attribute columns - constrains aggregate methods (sum, avg, etc.)
365
394
  declare type NumericColumns<TDef extends ModelDefinition> = {
366
395
  [K in AttributeKeys<TDef>]: InferAttributeType<TDef['attributes'][K]> extends number ? K : never
@@ -583,9 +612,11 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
583
612
  withTrashed(): ModelQueryBuilder<TDef, TSelected>;
584
613
  onlyTrashed(): ModelQueryBuilder<TDef, TSelected>;
585
614
  where<K extends ColumnName<TDef>>(column: K, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): ModelQueryBuilder<TDef, TSelected>;
615
+ where<K extends ColumnName<TDef>>(column: K, operator: 'in' | 'not in', value: ReadonlyArray<K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown>): ModelQueryBuilder<TDef, TSelected>;
586
616
  where<K extends ColumnName<TDef>>(column: K, operator: WhereOperator, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): ModelQueryBuilder<TDef, TSelected>;
587
617
  where<K extends ColumnName<TDef>>(column: K, operatorOrValue: WhereOperator | unknown, value?: unknown): ModelQueryBuilder<TDef, TSelected>;
588
618
  orWhere<K extends ColumnName<TDef>>(column: K, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): ModelQueryBuilder<TDef, TSelected>;
619
+ orWhere<K extends ColumnName<TDef>>(column: K, operator: 'in' | 'not in', value: ReadonlyArray<K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown>): ModelQueryBuilder<TDef, TSelected>;
589
620
  orWhere<K extends ColumnName<TDef>>(column: K, operator: WhereOperator, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): ModelQueryBuilder<TDef, TSelected>;
590
621
  orWhere<K extends ColumnName<TDef>>(column: K, operatorOrValue: WhereOperator | unknown, value?: unknown): ModelQueryBuilder<TDef, TSelected>;
591
622
  whereIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bun-query-builder",
3
3
  "type": "module",
4
- "version": "0.2.39",
4
+ "version": "0.2.41",
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",