@prisma-next/sql-lane 0.3.0-dev.31 → 0.3.0-dev.33

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.
@@ -1,5 +1,5 @@
1
1
  import type { TableRef } from '@prisma-next/sql-relational-core/ast';
2
- import type { AnyBinaryBuilder, AnyExpressionSource, AnyOrderBuilder, JoinOnPredicate } from '@prisma-next/sql-relational-core/types';
2
+ import type { AnyBinaryBuilder, AnyExpressionSource, AnyOrderBuilder, AnyUnaryBuilder, JoinOnPredicate } from '@prisma-next/sql-relational-core/types';
3
3
  export interface ProjectionState {
4
4
  readonly aliases: string[];
5
5
  readonly columns: AnyExpressionSource[];
@@ -14,7 +14,7 @@ export interface IncludeState {
14
14
  readonly table: TableRef;
15
15
  readonly on: JoinOnPredicate;
16
16
  readonly childProjection: ProjectionState;
17
- readonly childWhere?: AnyBinaryBuilder;
17
+ readonly childWhere?: AnyBinaryBuilder | AnyUnaryBuilder;
18
18
  readonly childOrderBy?: AnyOrderBuilder;
19
19
  readonly childLimit?: number;
20
20
  }
@@ -23,7 +23,7 @@ export interface BuilderState {
23
23
  joins?: ReadonlyArray<JoinState>;
24
24
  includes?: ReadonlyArray<IncludeState>;
25
25
  projection?: ProjectionState;
26
- where?: AnyBinaryBuilder;
26
+ where?: AnyBinaryBuilder | AnyUnaryBuilder;
27
27
  orderBy?: AnyOrderBuilder;
28
28
  limit?: number;
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EAChB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAAC;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,KAAK,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAAC;IAC3C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@prisma-next/sql-lane",
3
- "version": "0.3.0-dev.31",
3
+ "version": "0.3.0-dev.33",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "Relational DSL and raw SQL helpers for Prisma Next",
7
7
  "dependencies": {
8
- "@prisma-next/contract": "0.3.0-dev.31",
9
- "@prisma-next/plan": "0.3.0-dev.31",
10
- "@prisma-next/sql-contract": "0.3.0-dev.31",
11
- "@prisma-next/sql-relational-core": "0.3.0-dev.31"
8
+ "@prisma-next/contract": "0.3.0-dev.33",
9
+ "@prisma-next/plan": "0.3.0-dev.33",
10
+ "@prisma-next/sql-contract": "0.3.0-dev.33",
11
+ "@prisma-next/sql-relational-core": "0.3.0-dev.33"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@types/pg": "8.16.0",
@@ -16,10 +16,10 @@
16
16
  "tsup": "8.5.1",
17
17
  "typescript": "5.9.3",
18
18
  "vitest": "4.0.16",
19
- "@prisma-next/sql-contract-ts": "0.3.0-dev.31",
20
- "@prisma-next/sql-runtime": "0.3.0-dev.31",
21
- "@prisma-next/tsconfig": "0.0.0",
22
- "@prisma-next/test-utils": "0.0.1"
19
+ "@prisma-next/sql-contract-ts": "0.3.0-dev.33",
20
+ "@prisma-next/sql-runtime": "0.3.0-dev.33",
21
+ "@prisma-next/test-utils": "0.0.1",
22
+ "@prisma-next/tsconfig": "0.0.0"
23
23
  },
24
24
  "files": [
25
25
  "dist",
@@ -1,11 +1,11 @@
1
1
  import type { ParamDescriptor } from '@prisma-next/contract/types';
2
2
  import type { SqlContract, SqlStorage, StorageColumn } from '@prisma-next/sql-contract/types';
3
3
  import type {
4
- BinaryExpr,
5
4
  ColumnRef,
6
5
  IncludeAst,
7
6
  OperationExpr,
8
7
  TableRef,
8
+ WhereExpr,
9
9
  } from '@prisma-next/sql-relational-core/ast';
10
10
  import {
11
11
  createColumnRef,
@@ -205,7 +205,7 @@ export function buildIncludeAst(
205
205
  })()
206
206
  : undefined;
207
207
 
208
- let childWhere: BinaryExpr | undefined;
208
+ let childWhere: WhereExpr | undefined;
209
209
  if (include.childWhere) {
210
210
  const whereResult = buildWhereExpr(
211
211
  contract,
@@ -18,6 +18,7 @@ import type {
18
18
  InferReturningRow,
19
19
  ParamPlaceholder,
20
20
  SqlBuilderOptions,
21
+ UnaryBuilder,
21
22
  } from '@prisma-next/sql-relational-core/types';
22
23
  import { checkReturningCapability } from '../utils/capabilities';
23
24
  import {
@@ -48,7 +49,7 @@ export interface UpdateBuilder<
48
49
  CodecTypes extends Record<string, { readonly output: unknown }> = Record<string, never>,
49
50
  Row = unknown,
50
51
  > {
51
- where(predicate: BinaryBuilder): UpdateBuilder<TContract, CodecTypes, Row>;
52
+ where(predicate: BinaryBuilder | UnaryBuilder): UpdateBuilder<TContract, CodecTypes, Row>;
52
53
  returning<const Columns extends readonly AnyColumnBuilder[]>(
53
54
  ...columns: Columns
54
55
  ): UpdateBuilder<TContract, CodecTypes, InferReturningRow<Columns>>;
@@ -60,7 +61,7 @@ export interface DeleteBuilder<
60
61
  CodecTypes extends Record<string, { readonly output: unknown }> = Record<string, never>,
61
62
  Row = unknown,
62
63
  > {
63
- where(predicate: BinaryBuilder): DeleteBuilder<TContract, CodecTypes, Row>;
64
+ where(predicate: BinaryBuilder | UnaryBuilder): DeleteBuilder<TContract, CodecTypes, Row>;
64
65
  returning<const Columns extends readonly AnyColumnBuilder[]>(
65
66
  ...columns: Columns
66
67
  ): DeleteBuilder<TContract, CodecTypes, InferReturningRow<Columns>>;
@@ -206,7 +207,7 @@ export class UpdateBuilderImpl<
206
207
  private readonly context: QueryLaneContext<TContract>;
207
208
  private readonly table: TableRef;
208
209
  private readonly set: Record<string, ParamPlaceholder>;
209
- private wherePredicate?: BinaryBuilder;
210
+ private wherePredicate?: BinaryBuilder | UnaryBuilder;
210
211
  private returningColumns: AnyColumnBuilder[] = [];
211
212
 
212
213
  constructor(
@@ -220,7 +221,7 @@ export class UpdateBuilderImpl<
220
221
  this.set = set;
221
222
  }
222
223
 
223
- where(predicate: BinaryBuilder): UpdateBuilder<TContract, CodecTypes, Row> {
224
+ where(predicate: BinaryBuilder | UnaryBuilder): UpdateBuilder<TContract, CodecTypes, Row> {
224
225
  const builder = new UpdateBuilderImpl<TContract, CodecTypes, Row>(
225
226
  {
226
227
  context: this.context,
@@ -374,7 +375,7 @@ export class DeleteBuilderImpl<
374
375
  private readonly contract: TContract;
375
376
  private readonly context: QueryLaneContext<TContract>;
376
377
  private readonly table: TableRef;
377
- private wherePredicate?: BinaryBuilder;
378
+ private wherePredicate?: BinaryBuilder | UnaryBuilder;
378
379
  private returningColumns: AnyColumnBuilder[] = [];
379
380
 
380
381
  constructor(options: SqlBuilderOptions<TContract>, table: TableRef) {
@@ -383,7 +384,7 @@ export class DeleteBuilderImpl<
383
384
  this.table = table;
384
385
  }
385
386
 
386
- where(predicate: BinaryBuilder): DeleteBuilder<TContract, CodecTypes, Row> {
387
+ where(predicate: BinaryBuilder | UnaryBuilder): DeleteBuilder<TContract, CodecTypes, Row> {
387
388
  const builder = new DeleteBuilderImpl<TContract, CodecTypes, Row>(
388
389
  {
389
390
  context: this.context,
package/src/sql/plan.ts CHANGED
@@ -111,12 +111,19 @@ export function buildMeta(args: MetaBuildArgs): PlanMeta {
111
111
  }
112
112
  // Add child WHERE columns if present
113
113
  if (include.childWhere) {
114
- // childWhere.left is Expression (already converted at builder creation time)
115
- collectRefsFromExpression(include.childWhere.left, refsColumns);
116
- // Handle right side of child WHERE clause - can be ParamPlaceholder or ExpressionSource
117
- const childWhereRight = include.childWhere.right;
118
- if (isColumnBuilder(childWhereRight) || isExpressionBuilder(childWhereRight)) {
119
- collectRefsFromExpressionSource(childWhereRight, refsColumns);
114
+ // Handle UnaryBuilder (e.g., NullCheckBuilder) - it only has 'expr' property
115
+ if (include.childWhere.kind === 'nullCheck') {
116
+ const expr: Expression = include.childWhere.expr;
117
+ collectRefsFromExpression(expr, refsColumns);
118
+ } else {
119
+ // BinaryBuilder - has 'left' and 'right' properties
120
+ // childWhere.left is Expression (already converted at builder creation time)
121
+ collectRefsFromExpression(include.childWhere.left, refsColumns);
122
+ // Handle right side of child WHERE clause - can be ParamPlaceholder or ExpressionSource
123
+ const childWhereRight = include.childWhere.right;
124
+ if (isColumnBuilder(childWhereRight) || isExpressionBuilder(childWhereRight)) {
125
+ collectRefsFromExpressionSource(childWhereRight, refsColumns);
126
+ }
120
127
  }
121
128
  }
122
129
  // Add child ORDER BY columns if present
@@ -128,28 +135,35 @@ export function buildMeta(args: MetaBuildArgs): PlanMeta {
128
135
  }
129
136
 
130
137
  if (args.where) {
131
- // args.where.left is Expression (already converted at builder creation time)
132
- const leftExpr: Expression = args.where.left;
133
- if (isOperationExpr(leftExpr)) {
134
- const allRefs = collectColumnRefs(leftExpr);
135
- for (const ref of allRefs) {
136
- refsColumns.set(`${ref.table}.${ref.column}`, {
137
- table: ref.table,
138
- column: ref.column,
138
+ // Handle UnaryBuilder (e.g., NullCheckBuilder) - it only has 'expr' property
139
+ if (args.where.kind === 'nullCheck') {
140
+ const expr: Expression = args.where.expr;
141
+ collectRefsFromExpression(expr, refsColumns);
142
+ } else {
143
+ // BinaryBuilder - has 'left' and 'right' properties
144
+ // args.where.left is Expression (already converted at builder creation time)
145
+ const leftExpr: Expression = args.where.left;
146
+ if (isOperationExpr(leftExpr)) {
147
+ const allRefs = collectColumnRefs(leftExpr);
148
+ for (const ref of allRefs) {
149
+ refsColumns.set(`${ref.table}.${ref.column}`, {
150
+ table: ref.table,
151
+ column: ref.column,
152
+ });
153
+ }
154
+ } else {
155
+ // leftExpr is ColumnRef
156
+ refsColumns.set(`${leftExpr.table}.${leftExpr.column}`, {
157
+ table: leftExpr.table,
158
+ column: leftExpr.column,
139
159
  });
140
160
  }
141
- } else {
142
- // leftExpr is ColumnRef
143
- refsColumns.set(`${leftExpr.table}.${leftExpr.column}`, {
144
- table: leftExpr.table,
145
- column: leftExpr.column,
146
- });
147
- }
148
161
 
149
- // Handle right side of WHERE clause - can be ParamPlaceholder or AnyExpressionSource
150
- const whereRight = args.where.right;
151
- if (isColumnBuilder(whereRight) || isExpressionBuilder(whereRight)) {
152
- collectRefsFromExpressionSource(whereRight, refsColumns);
162
+ // Handle right side of WHERE clause - can be ParamPlaceholder or AnyExpressionSource
163
+ const whereRight = args.where.right;
164
+ if (isColumnBuilder(whereRight) || isExpressionBuilder(whereRight)) {
165
+ collectRefsFromExpressionSource(whereRight, refsColumns);
166
+ }
153
167
  }
154
168
  }
155
169
 
@@ -1,8 +1,22 @@
1
1
  import type { ParamDescriptor } from '@prisma-next/contract/types';
2
2
  import type { SqlContract, SqlStorage, StorageColumn } from '@prisma-next/sql-contract/types';
3
- import type { BinaryExpr, Expression, ParamRef } from '@prisma-next/sql-relational-core/ast';
4
- import { createBinaryExpr, createParamRef } from '@prisma-next/sql-relational-core/ast';
5
- import type { BinaryBuilder, ParamPlaceholder } from '@prisma-next/sql-relational-core/types';
3
+ import type {
4
+ Expression,
5
+ NullCheckExpr,
6
+ ParamRef,
7
+ WhereExpr,
8
+ } from '@prisma-next/sql-relational-core/ast';
9
+ import {
10
+ createBinaryExpr,
11
+ createNullCheckExpr,
12
+ createParamRef,
13
+ } from '@prisma-next/sql-relational-core/ast';
14
+ import type {
15
+ BinaryBuilder,
16
+ NullCheckBuilder,
17
+ ParamPlaceholder,
18
+ UnaryBuilder,
19
+ } from '@prisma-next/sql-relational-core/types';
6
20
  import {
7
21
  isColumnBuilder,
8
22
  isExpressionBuilder,
@@ -16,18 +30,61 @@ import {
16
30
  } from '../utils/errors';
17
31
 
18
32
  export interface BuildWhereExprResult {
19
- expr: BinaryExpr;
33
+ expr: WhereExpr;
20
34
  codecId: string | undefined;
21
35
  paramName: string;
22
36
  }
23
37
 
38
+ /**
39
+ * Type guard to check if a builder is a NullCheckBuilder (unary).
40
+ */
41
+ function isNullCheckBuilder(builder: BinaryBuilder | UnaryBuilder): builder is NullCheckBuilder {
42
+ return builder.kind === 'nullCheck';
43
+ }
44
+
45
+ /**
46
+ * Builds a NullCheckExpr from a NullCheckBuilder.
47
+ */
48
+ function buildNullCheckExpr(
49
+ contract: SqlContract<SqlStorage>,
50
+ where: NullCheckBuilder,
51
+ ): NullCheckExpr {
52
+ const expr = where.expr;
53
+
54
+ // Validate column exists in contract if it's a ColumnRef
55
+ if (expr.kind === 'col') {
56
+ const { table, column } = expr;
57
+ const contractTable = contract.storage.tables[table];
58
+ if (!contractTable) {
59
+ errorUnknownTable(table);
60
+ }
61
+
62
+ const columnMeta: StorageColumn | undefined = contractTable.columns[column];
63
+ if (!columnMeta) {
64
+ errorUnknownColumn(column, table);
65
+ }
66
+ }
67
+
68
+ return createNullCheckExpr(expr, where.isNull);
69
+ }
70
+
24
71
  export function buildWhereExpr(
25
72
  contract: SqlContract<SqlStorage>,
26
- where: BinaryBuilder,
73
+ where: BinaryBuilder | UnaryBuilder,
27
74
  paramsMap: Record<string, unknown>,
28
75
  descriptors: ParamDescriptor[],
29
76
  values: unknown[],
30
77
  ): BuildWhereExprResult {
78
+ // Handle NullCheckBuilder (unary expression)
79
+ if (isNullCheckBuilder(where)) {
80
+ return {
81
+ expr: buildNullCheckExpr(contract, where),
82
+ codecId: undefined,
83
+ paramName: '',
84
+ };
85
+ }
86
+
87
+ // Handle BinaryBuilder (binary expression)
31
88
  let leftExpr: Expression;
32
89
  let codecId: string | undefined;
33
90
  let rightExpr: Expression | ParamRef;
@@ -1,7 +1,6 @@
1
1
  import type { ParamDescriptor } from '@prisma-next/contract/types';
2
2
  import type { SqlContract, SqlStorage, StorageColumn } from '@prisma-next/sql-contract/types';
3
3
  import type {
4
- BinaryExpr,
5
4
  ColumnRef,
6
5
  Direction,
7
6
  IncludeAst,
@@ -9,6 +8,7 @@ import type {
9
8
  JoinAst,
10
9
  OperationExpr,
11
10
  TableRef,
11
+ WhereExpr,
12
12
  } from '@prisma-next/sql-relational-core/ast';
13
13
  import {
14
14
  createJoinOnBuilder,
@@ -21,6 +21,7 @@ import type { QueryLaneContext } from '@prisma-next/sql-relational-core/query-la
21
21
  import type {
22
22
  AnyBinaryBuilder,
23
23
  AnyOrderBuilder,
24
+ AnyUnaryBuilder,
24
25
  BinaryBuilder,
25
26
  BuildOptions,
26
27
  InferNestedProjectionRow,
@@ -29,6 +30,7 @@ import type {
29
30
  NestedProjection,
30
31
  OrderBuilder,
31
32
  SqlBuilderOptions,
33
+ UnaryBuilder,
32
34
  } from '@prisma-next/sql-relational-core/types';
33
35
  import { isExpressionBuilder } from '@prisma-next/sql-relational-core/utils/guards';
34
36
  import type { ProjectionInput } from '../types/internal';
@@ -235,7 +237,9 @@ export class SelectBuilderImpl<
235
237
  );
236
238
  }
237
239
 
238
- where(expr: AnyBinaryBuilder): SelectBuilderImpl<TContract, Row, CodecTypes, Includes> {
240
+ where(
241
+ expr: AnyBinaryBuilder | AnyUnaryBuilder,
242
+ ): SelectBuilderImpl<TContract, Row, CodecTypes, Includes> {
239
243
  return new SelectBuilderImpl<TContract, Row, CodecTypes, Includes>(
240
244
  {
241
245
  context: this.context,
@@ -376,7 +380,7 @@ export class SelectBuilderImpl<
376
380
  joins?: ReadonlyArray<JoinAst>;
377
381
  includes?: ReadonlyArray<IncludeAst>;
378
382
  project: ReadonlyArray<{ alias: string; expr: ColumnRef | IncludeRef | OperationExpr }>;
379
- where?: BinaryExpr;
383
+ where?: WhereExpr;
380
384
  orderBy?: ReadonlyArray<{ expr: ColumnRef | OperationExpr; dir: Direction }>;
381
385
  limit?: number;
382
386
  });
@@ -397,7 +401,7 @@ export class SelectBuilderImpl<
397
401
  projection: ProjectionState;
398
402
  joins?: ReadonlyArray<JoinState>;
399
403
  includes?: ReadonlyArray<IncludeState>;
400
- where?: BinaryBuilder;
404
+ where?: BinaryBuilder | UnaryBuilder;
401
405
  orderBy?: AnyOrderBuilder;
402
406
  paramDescriptors: ParamDescriptor[];
403
407
  paramCodecs?: Record<string, string>;
@@ -5,6 +5,7 @@ import type {
5
5
  AnyBinaryBuilder,
6
6
  AnyExpressionSource,
7
7
  AnyOrderBuilder,
8
+ AnyUnaryBuilder,
8
9
  NestedProjection,
9
10
  } from '@prisma-next/sql-relational-core/types';
10
11
  import type { ProjectionState } from '../utils/state';
@@ -31,10 +32,10 @@ export interface MetaBuildArgs {
31
32
  readonly right: unknown;
32
33
  };
33
34
  readonly childProjection: ProjectionState;
34
- readonly childWhere?: AnyBinaryBuilder;
35
+ readonly childWhere?: AnyBinaryBuilder | AnyUnaryBuilder;
35
36
  readonly childOrderBy?: AnyOrderBuilder;
36
37
  }>;
37
- readonly where?: AnyBinaryBuilder;
38
+ readonly where?: AnyBinaryBuilder | AnyUnaryBuilder;
38
39
  readonly orderBy?: AnyOrderBuilder;
39
40
  readonly paramDescriptors: ParamDescriptor[];
40
41
  readonly paramCodecs?: Record<string, string>;
@@ -3,6 +3,7 @@ import type {
3
3
  AnyBinaryBuilder,
4
4
  AnyExpressionSource,
5
5
  AnyOrderBuilder,
6
+ AnyUnaryBuilder,
6
7
  JoinOnPredicate,
7
8
  } from '@prisma-next/sql-relational-core/types';
8
9
 
@@ -22,7 +23,7 @@ export interface IncludeState {
22
23
  readonly table: TableRef;
23
24
  readonly on: JoinOnPredicate;
24
25
  readonly childProjection: ProjectionState;
25
- readonly childWhere?: AnyBinaryBuilder;
26
+ readonly childWhere?: AnyBinaryBuilder | AnyUnaryBuilder;
26
27
  readonly childOrderBy?: AnyOrderBuilder;
27
28
  readonly childLimit?: number;
28
29
  }
@@ -32,7 +33,7 @@ export interface BuilderState {
32
33
  joins?: ReadonlyArray<JoinState>;
33
34
  includes?: ReadonlyArray<IncludeState>;
34
35
  projection?: ProjectionState;
35
- where?: AnyBinaryBuilder;
36
+ where?: AnyBinaryBuilder | AnyUnaryBuilder;
36
37
  orderBy?: AnyOrderBuilder;
37
38
  limit?: number;
38
39
  }