pqb 0.32.0 → 0.33.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/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as orchid_core from 'orchid-core';
2
- import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, SingleSqlItem, Sql, RecordUnknown, RecordKeyTrue, EmptyObject, QueryBaseCommon, QueryColumns, QueryMetaBase, QueryReturnType, QueryThen, Expression, QueryColumn, MaybeArray, SelectableBase, TemplateLiteralArgs, PickOutputTypeAndOperators, PickQueryResult, OperatorToSQL, ColumnsShapeBase, ColumnsParsers, RecordString, PickQueryTable, FnUnknownToUnknown, ExpressionChain, getValueKey, PickQueryShape, PickQueryTableMetaResult, EmptyTuple, PickQueryMeta, PickQueryMetaResultReturnType, QueryColumnToNullable, PickQueryMetaShape, PickQueryTableMetaResultShape, PickQueryMetaResultWindows, QueryColumnBooleanOrNull, ExpressionData, ValExpression, PickOutputType, SQLQueryArgs, ColumnSchemaConfig, DateColumnData, Code, TimeInterval, ColumnTypeSchemaArg, ColumnDataBase, ArrayMethodsData, RawSQLBase, RawSQLValues, ExpressionTypeMethod, DynamicSQLArg, StaticSQLArgs, ForeignKeyTable, ColumnNameOfTable, BaseNumberData, PickColumnBaseData, ColumnWithDefault, StringTypeData, PrimaryKeyColumn, ParseColumn, EncodeColumn, PickQueryMetaResult, QueryColumnsInit, DefaultSelectColumns, CoreQueryScopes, DbBase, QueryCatch, TransactionState, ColumnTypeBase, CoreBaseOperators, PickQueryUniqueProperties, IsQuery, PickQueryTableMetaResultInputType, PickQueryMetaShapeResultReturnType, SingleSql, MergeObjects, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, OperatorsNullable, PickQueryMetaReturnType, UniqueColumn, TimestampHelpers, Codes, ColumnDataCheckBase, PickQueryTableMetaShape } from 'orchid-core';
2
+ import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, SingleSqlItem, Sql, RecordUnknown, RecordKeyTrue, EmptyObject, QueryBaseCommon, QueryColumns, QueryMetaBase, QueryReturnType, QueryThen, Expression, MaybeArray, SelectableBase, TemplateLiteralArgs, ColumnsShapeBase, ColumnsParsers, RecordString, PickQueryTable, QueryDataTransform, ExpressionChain, getValueKey, QueryColumn, PickQueryShape, PickQueryTableMetaResult, EmptyTuple, PickQueryMeta, PickQueryMetaResultReturnType, QueryColumnToNullable, PickQueryMetaShape, PickQueryTableMetaResultShape, PickQueryMetaResultWindows, PickOutputTypeAndOperators, PickQueryResult, ExpressionData, ValExpression, PickOutputType, SQLQueryArgs, ColumnSchemaConfig, DateColumnData, Code, TimeInterval, ColumnTypeSchemaArg, ColumnDataBase, ArrayMethodsData, RawSQLBase, RawSQLValues, ExpressionTypeMethod, DynamicSQLArg, StaticSQLArgs, ForeignKeyTable, ColumnNameOfTable, BaseNumberData, PickColumnBaseData, ColumnWithDefault, StringTypeData, PrimaryKeyColumn, ParseColumn, EncodeColumn, QueryColumnsInit, DefaultSelectColumns, CoreQueryScopes, DbBase, QueryCatch, TransactionState, ColumnTypeBase, PickQueryUniqueProperties, PickQueryMetaResult, IsQuery, PickQueryTableMetaResultInputType, SingleSql, MergeObjects, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, OperatorsNullable, PickQueryMetaReturnType, UniqueColumn, TimestampHelpers, Codes, ColumnDataCheckBase, PickQueryTableMetaShape } from 'orchid-core';
3
3
  import { PoolConfig, Pool, PoolClient } from 'pg';
4
4
  import { inspect } from 'node:util';
5
5
  import { AsyncLocalStorage } from 'node:async_hooks';
@@ -119,50 +119,11 @@ interface WithOptions {
119
119
  materialized?: true;
120
120
  notMaterialized?: true;
121
121
  }
122
- interface JsonItem<As extends string = string, Type extends QueryColumn = QueryColumn> {
123
- __json: [
124
- kind: 'set',
125
- as: As,
126
- type: Type,
127
- column: string | JsonItem,
128
- path: Array<string | number>,
129
- value: unknown,
130
- options?: {
131
- createIfMissing?: boolean;
132
- }
133
- ] | [
134
- kind: 'insert',
135
- as: As,
136
- type: Type,
137
- column: string | JsonItem,
138
- path: Array<string | number>,
139
- value: unknown,
140
- options?: {
141
- insertAfter?: boolean;
142
- }
143
- ] | [
144
- kind: 'remove',
145
- as: As,
146
- type: Type,
147
- column: string | JsonItem,
148
- path: Array<string | number>
149
- ] | [
150
- kind: 'pathQuery',
151
- as: As,
152
- type: Type,
153
- column: string | JsonItem,
154
- path: string,
155
- options?: {
156
- vars?: string;
157
- silent?: boolean;
158
- }
159
- ];
160
- }
161
- type SelectItem = string | SelectAs | JsonItem | Expression;
122
+ type SelectItem = string | SelectAs | Expression;
162
123
  interface SelectAs {
163
- selectAs: SelectAsValue$1;
124
+ selectAs: SelectAsValue;
164
125
  }
165
- interface SelectAsValue$1 {
126
+ interface SelectAsValue {
166
127
  [K: string]: string | Query | Expression;
167
128
  }
168
129
  type OrderTsQueryConfig = true | OrderTsQueryConfigObject;
@@ -307,76 +268,6 @@ type OnConflictMerge = string | string[] | {
307
268
  except: string | string[];
308
269
  };
309
270
 
310
- interface Operator<Value, Column extends PickOutputTypeAndOperators = PickOutputTypeAndOperators> {
311
- <T extends PickQueryResult>(this: T, arg: Value): Omit<SetQueryReturnsColumnOrThrow<T, Column>, keyof T['result']['value']['operators']> & Column['operators'];
312
- _opType: Value;
313
- _op: OperatorToSQL<any, ToSQLCtx>;
314
- }
315
- interface BaseOperators {
316
- [K: string]: Operator<any>;
317
- }
318
- declare function setQueryOperators(query: PickQueryBaseQuery, operators: BaseOperators): PickQueryBaseQuery;
319
- type Base<Value> = {
320
- equals: Operator<Value | Query | Expression, BooleanQueryColumn>;
321
- not: Operator<Value | Query | Expression, BooleanQueryColumn>;
322
- in: Operator<Value[] | Query | Expression, BooleanQueryColumn>;
323
- notIn: Operator<Value[] | Query | Expression, BooleanQueryColumn>;
324
- };
325
- type OperatorsBoolean = Base<boolean> & {
326
- and: Operator<{
327
- result: {
328
- value: BooleanQueryColumn;
329
- };
330
- } & OperatorsBoolean, BooleanQueryColumn>;
331
- or: Operator<{
332
- result: {
333
- value: BooleanQueryColumn;
334
- };
335
- } & OperatorsBoolean, BooleanQueryColumn>;
336
- };
337
- type Ord<Value> = Base<Value> & {
338
- lt: Operator<Value | Query | Expression, BooleanQueryColumn>;
339
- lte: Operator<Value | Query | Expression, BooleanQueryColumn>;
340
- gt: Operator<Value | Query | Expression, BooleanQueryColumn>;
341
- gte: Operator<Value | Query | Expression, BooleanQueryColumn>;
342
- between: Operator<[
343
- Value | Query | Expression,
344
- Value | Query | Expression
345
- ], BooleanQueryColumn>;
346
- };
347
- type OperatorsNumber = Ord<number>;
348
- type OperatorsText = Base<string> & {
349
- contains: Operator<string | Query | Expression, BooleanQueryColumn>;
350
- containsSensitive: Operator<string | Query | Expression, BooleanQueryColumn>;
351
- startsWith: Operator<string | Query | Expression, BooleanQueryColumn>;
352
- startsWithSensitive: Operator<string | Query | Expression, BooleanQueryColumn>;
353
- endsWith: Operator<string | Query | Expression, BooleanQueryColumn>;
354
- endsWithSensitive: Operator<string | Query | Expression, BooleanQueryColumn>;
355
- };
356
- type OperatorsJson = Base<unknown> & {
357
- jsonPath: Operator<[
358
- path: string,
359
- op: string,
360
- value: unknown | Query | Expression
361
- ], BooleanQueryColumn>;
362
- jsonSupersetOf: Operator<unknown | Query | Expression, BooleanQueryColumn>;
363
- jsonSubsetOf: Operator<unknown | Query | Expression, BooleanQueryColumn>;
364
- };
365
- type OperatorsAny = Base<any>;
366
- type OperatorsDate = Ord<Date | string>;
367
- type OperatorsArray = Base<any>;
368
- type OperatorsTime = Ord<string>;
369
- declare const Operators: {
370
- any: OperatorsAny;
371
- boolean: OperatorsBoolean;
372
- number: OperatorsNumber;
373
- date: OperatorsDate;
374
- time: OperatorsTime;
375
- text: OperatorsText;
376
- json: OperatorsJson;
377
- array: OperatorsArray;
378
- };
379
-
380
271
  interface RecordOfColumnsShapeBase {
381
272
  [K: string]: ColumnsShapeBase;
382
273
  }
@@ -446,15 +337,15 @@ interface CommonQueryData {
446
337
  logger: QueryLogger;
447
338
  autoPreparedStatements?: boolean;
448
339
  [toSQLCacheKey]?: Sql;
449
- transform?: FnUnknownToUnknown[];
340
+ transform?: QueryDataTransform[];
450
341
  language?: string;
451
- isSubQuery?: true;
342
+ subQuery?: number;
452
343
  relChain?: (Query | RelationQuery)[];
453
344
  /**
454
345
  * Stores current operator functions available for the query.
455
346
  * Is needed to remove these operators from query object when changing the query type, see {@link setQueryOperators}.
456
347
  */
457
- operators?: BaseOperators;
348
+ operators?: RecordUnknown;
458
349
  scopes?: {
459
350
  [K: string]: QueryScopeData;
460
351
  };
@@ -732,10 +623,11 @@ type JoinOptionalMain<T extends PickQueryMetaResultReturnType, Selectable extend
732
623
  column: QueryColumnToNullable<T['meta']['selectable'][K]['column']>;
733
624
  };
734
625
  } & Selectable : T['meta'][K];
735
- } : K extends 'result' ? NullableResult<T> : K extends 'then' ? QueryThen<GetQueryResult<T, NullableResult<T>>> : T[K];
736
- };
737
- type NullableResult<T extends PickQueryResult> = {
738
- [K in keyof T['result']]: QueryColumnToNullable<T['result'][K]>;
626
+ } : K extends 'result' ? {
627
+ [K in keyof T['result']]: QueryColumnToNullable<T['result'][K]>;
628
+ } : K extends 'then' ? QueryThen<GetQueryResult<T, {
629
+ [K in keyof T['result']]: QueryColumnToNullable<T['result'][K]>;
630
+ }>> : T[K];
739
631
  };
740
632
  /**
741
633
  * Map the `with` table first argument of `join` or `joinLateral` to a query type.
@@ -1437,9 +1329,9 @@ declare class OnMethods {
1437
1329
 
1438
1330
  interface AggregateOptions<T extends PickQueryMetaResultRelationsWindows> {
1439
1331
  distinct?: boolean;
1440
- order?: OrderArg<T> | OrderArg<T>[];
1332
+ order?: OrderArg<T> | OrderArgs<T>;
1441
1333
  filter?: WhereArg<T>;
1442
- filterOr?: WhereArg<T>[];
1334
+ filterOr?: WhereArgs<T>;
1443
1335
  withinGroup?: boolean;
1444
1336
  over?: Over<T>;
1445
1337
  }
@@ -1472,11 +1364,217 @@ declare class FnExpression<Q extends Query = Query, T extends QueryColumn = Quer
1472
1364
  constructor(query: Q, fn: string, args: FnExpressionArgs<Q>, options: AggregateOptions<Q>, value: T);
1473
1365
  makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
1474
1366
  }
1475
- type ColumnExpression<C extends QueryColumn, Ops extends BaseOperators = C['operators']> = Expression<C> & {
1476
- [K in keyof Ops]: (arg: Ops[K]['_opType']) => ColumnExpression<QueryColumnBooleanOrNull>;
1477
- };
1478
1367
  declare function makeFnExpression<T extends PickQueryMetaResultRelationsWindows, C extends QueryColumn>(self: T, type: C, fn: string, args: FnExpressionArgs<Query>, options?: AggregateOptions<T>): SetQueryReturnsColumnOrThrow<T, C> & C['operators'];
1479
1368
 
1369
+ interface Operator<Value, Column extends PickOutputTypeAndOperators = PickOutputTypeAndOperators> {
1370
+ <T extends PickQueryResult>(this: T, arg: Value): Omit<SetQueryReturnsColumnOrThrow<T, Column>, keyof T['result']['value']['operators']> & Column['operators'];
1371
+ _opType: Value;
1372
+ }
1373
+ declare function setQueryOperators(query: PickQueryBaseQuery, operators: RecordUnknown): PickQueryBaseQuery;
1374
+ interface Base<Value> {
1375
+ equals: Operator<Value | Query | Expression, BooleanQueryColumn>;
1376
+ not: Operator<Value | Query | Expression, BooleanQueryColumn>;
1377
+ in: Operator<Value[] | Query | Expression, BooleanQueryColumn>;
1378
+ notIn: Operator<Value[] | Query | Expression, BooleanQueryColumn>;
1379
+ }
1380
+ interface OperatorsBooleanSelf extends OperatorsBoolean {
1381
+ result: {
1382
+ value: BooleanQueryColumn;
1383
+ };
1384
+ }
1385
+ interface OperatorsBoolean extends Base<boolean> {
1386
+ and: Operator<OperatorsBooleanSelf, BooleanQueryColumn>;
1387
+ or: Operator<OperatorsBooleanSelf, BooleanQueryColumn>;
1388
+ }
1389
+ interface Ord<Value> extends Base<Value> {
1390
+ lt: Operator<Value | Query | Expression, BooleanQueryColumn>;
1391
+ lte: Operator<Value | Query | Expression, BooleanQueryColumn>;
1392
+ gt: Operator<Value | Query | Expression, BooleanQueryColumn>;
1393
+ gte: Operator<Value | Query | Expression, BooleanQueryColumn>;
1394
+ between: Operator<[
1395
+ Value | Query | Expression,
1396
+ Value | Query | Expression
1397
+ ], BooleanQueryColumn>;
1398
+ }
1399
+ type OperatorsNumber = Ord<number>;
1400
+ interface OperatorsText extends Base<string> {
1401
+ contains: Operator<string | Query | Expression, BooleanQueryColumn>;
1402
+ containsSensitive: Operator<string | Query | Expression, BooleanQueryColumn>;
1403
+ startsWith: Operator<string | Query | Expression, BooleanQueryColumn>;
1404
+ startsWithSensitive: Operator<string | Query | Expression, BooleanQueryColumn>;
1405
+ endsWith: Operator<string | Query | Expression, BooleanQueryColumn>;
1406
+ endsWithSensitive: Operator<string | Query | Expression, BooleanQueryColumn>;
1407
+ }
1408
+ interface JsonPathQueryOptions {
1409
+ vars?: RecordUnknown;
1410
+ silent?: boolean;
1411
+ }
1412
+ interface JsonPathQueryTypeOptions<T extends PickQueryColumnTypes, C extends QueryColumn> extends JsonPathQueryOptions {
1413
+ type?: (types: T['columnTypes']) => C;
1414
+ }
1415
+ interface JsonPathQuery {
1416
+ /**
1417
+ * Selects a value from JSON data using a JSON path.
1418
+ *
1419
+ * Calls the [jsonb_path_query_first](https://www.postgresql.org/docs/current/functions-json.html) Postgres function.
1420
+ *
1421
+ * Type can be provided via `{ type: (t) => t.columnType() }` options, by default the type is `unknown`.
1422
+ *
1423
+ * Optionally takes `vars` and `silent` parameters, see [Postgres docs](https://www.postgresql.org/docs/current/functions-json.html) for details.
1424
+ *
1425
+ * ```ts
1426
+ * // query a single value from a JSON data,
1427
+ * // because of the provided type, string JSON value will be parsed to a Date object.
1428
+ * const value = await db.table
1429
+ * .get('data')
1430
+ * .jsonPathQueryFirst('$.path.to.date', { type: (t) => t.date().asDate() });
1431
+ *
1432
+ * // using it in a select
1433
+ * const records = await db.table.select({
1434
+ * date: (q) =>
1435
+ * q.get('data').jsonPathQueryFirst('$[*] ? (@ = key)', {
1436
+ * type: (t) => t.integer(),
1437
+ * // defining `vars` and `silent`
1438
+ * vars: { key: 'key' },
1439
+ * silent: true,
1440
+ * }),
1441
+ * });
1442
+ *
1443
+ * // using it in `where`
1444
+ * const filtered = await db.table.where((q) =>
1445
+ * // filtering records by the `name` property from the `data` JSON column
1446
+ * q.get('data').jsonPathQueryFirst('$.name').equals('name'),
1447
+ * );
1448
+ *
1449
+ * // using it in update
1450
+ * await db.table.find(id).update({
1451
+ * // using data property to set the `name` column
1452
+ * name: (q) =>
1453
+ * q.get('data').jsonPathQueryFirst('$.name', { type: (t) => t.string() }),
1454
+ * });
1455
+ * ```
1456
+ *
1457
+ * @param path - JSON path
1458
+ * @param options - can have type, vars, silent
1459
+ */
1460
+ <T extends PickQueryResultColumnTypes, C extends QueryColumn = QueryColumn<unknown, OperatorsAny>>(this: T, path: string, options?: JsonPathQueryTypeOptions<T, C>): Omit<SetQueryReturnsColumnOrThrow<T, C>, keyof T['result']['value']['operators']> & C['operators'];
1461
+ _opType: never;
1462
+ }
1463
+ interface OperatorsJson extends Base<unknown> {
1464
+ jsonPathQueryFirst: JsonPathQuery;
1465
+ jsonSupersetOf: Operator<unknown | Query | Expression, BooleanQueryColumn>;
1466
+ jsonSubsetOf: Operator<unknown | Query | Expression, BooleanQueryColumn>;
1467
+ jsonSet: {
1468
+ /**
1469
+ * Returns a JSON value/object/array where a given value is set at the given path.
1470
+ * The path is a key or an array of keys to access the value.
1471
+ *
1472
+ * Calls the [jsonb_set](https://www.postgresql.org/docs/current/functions-json.html) Postgres function.
1473
+ *
1474
+ * It can be used in all contexts on a single JSON value.
1475
+ *
1476
+ * ```ts
1477
+ * await db.table.find(id).update({
1478
+ * data: (q) => q.get('data').jsonSet(['path', 'to', 'value'], 'new value'),
1479
+ * });
1480
+ * ```
1481
+ *
1482
+ * @param path - key or array of keys
1483
+ * @param value - value to set
1484
+ */
1485
+ <T extends PickQueryResult>(this: T, path: MaybeArray<string | number>, value: unknown): T;
1486
+ _opType: never;
1487
+ };
1488
+ jsonReplace: {
1489
+ /**
1490
+ * The same as {@link jsonSet}, but sets the last argument of `jsonb_set` to false,
1491
+ * so this function only has effect when the value already existed in the JSON.
1492
+ *
1493
+ * ```ts
1494
+ * await db.table.find(id).update({
1495
+ * // data.path.to.value will be updated only if it already was defined
1496
+ * data: (q) => q.get('data').jsonReplace(['path', 'to', 'value'], 'new value'),
1497
+ * });
1498
+ * ```
1499
+ *
1500
+ * @param path - key or array of keys
1501
+ * @param value - value to set
1502
+ */
1503
+ <T extends PickQueryResult>(this: T, path: MaybeArray<string | number>, value: unknown): T;
1504
+ _opType: never;
1505
+ };
1506
+ jsonInsert: {
1507
+ /**
1508
+ * Inserts a value into a given position of JSON array and returns the whole array.
1509
+ * The path is a key or an array of keys to access the value.
1510
+ *
1511
+ * If a value exists at the given path, the value is not replaced.
1512
+ *
1513
+ * Provide `{ after: true }` option to insert a value after a given position.
1514
+ *
1515
+ * Calls the [jsonb_insert](https://www.postgresql.org/docs/current/functions-json.html) Postgres function.
1516
+ *
1517
+ * It can be used in all contexts on a single JSON value.
1518
+ *
1519
+ * ```ts
1520
+ * // update the record with data { tags: ['two'] } to have data { tags: ['one', 'two'] }
1521
+ * await db.table.find(id).update({
1522
+ * data: (q) => q.get('data').jsonInsert(['tags', 0], 'one'),
1523
+ * });
1524
+ *
1525
+ * // add 'three' after 'two'
1526
+ * await db.table.find(id).update({
1527
+ * data: (q) => q.get('data').jsonInsert(['tags', 1], 'three', { after: true }),
1528
+ * });
1529
+ * ```
1530
+ *
1531
+ * @param path - key or array of keys
1532
+ * @param value - value to insert
1533
+ * @param options - can have `after: true`
1534
+ */
1535
+ <T extends PickQueryResult>(this: T, path: MaybeArray<string | number>, value: unknown, options?: {
1536
+ after?: boolean;
1537
+ }): T;
1538
+ _opType: never;
1539
+ };
1540
+ jsonRemove: {
1541
+ /**
1542
+ * Remove a value from a JSON object or array at a given path.
1543
+ * The path is a key or an array of keys to access the value.
1544
+ *
1545
+ * Uses the [#-](https://www.postgresql.org/docs/current/functions-json.html) Postgres operator.
1546
+ *
1547
+ * It can be used in all contexts on a single JSON value.
1548
+ *
1549
+ * ```ts
1550
+ * // the record has data { tags: ['one', 'two'] }
1551
+ * // removing the first tag, the data will be { tags: ['two'] }
1552
+ * const result = await db.table.find(id).update({
1553
+ * data: (q) => q.get('data').jsonRemove(['tags', 0]),
1554
+ * });
1555
+ * ```
1556
+ *
1557
+ * @param path - key or array of keys
1558
+ */
1559
+ <T extends PickQueryResult>(this: T, path: MaybeArray<string | number>): T;
1560
+ _opType: never;
1561
+ };
1562
+ }
1563
+ type OperatorsAny = Base<any>;
1564
+ type OperatorsDate = Ord<Date | string>;
1565
+ type OperatorsArray = Base<any>;
1566
+ type OperatorsTime = Ord<string>;
1567
+ declare const Operators: {
1568
+ any: OperatorsAny;
1569
+ boolean: OperatorsBoolean;
1570
+ number: OperatorsNumber;
1571
+ date: OperatorsDate;
1572
+ time: OperatorsTime;
1573
+ text: OperatorsText;
1574
+ json: OperatorsJson;
1575
+ array: OperatorsArray;
1576
+ };
1577
+
1480
1578
  declare class ColumnRefExpression<T extends QueryColumn> extends Expression<T> {
1481
1579
  name: string;
1482
1580
  result: {
@@ -1603,12 +1701,12 @@ declare class ExpressionMethods {
1603
1701
  * @param args
1604
1702
  * @param options
1605
1703
  */
1606
- fn<T extends PickQueryMetaResultRelationsWindowsColumnTypes, Type = unknown, C extends QueryColumn = QueryColumn<Type>>(this: T, fn: string, args: SelectableOrExpression<T>[], options?: AggregateOptions<T>): SetQueryReturnsFn<T, C>;
1704
+ fn<T extends PickQueryMetaResultRelationsWindowsColumnTypes, Type = unknown, C extends QueryColumn = QueryColumn<Type>>(this: T, fn: string, args: SelectableOrExpressions<T>, options?: AggregateOptions<T>): SetQueryReturnsFn<T, C>;
1607
1705
  or(...args: [OrExpressionArg, ...OrExpressionArg[]]): OrExpression;
1608
1706
  }
1609
1707
 
1610
1708
  type WhereArg<T extends PickQueryMetaRelations> = {
1611
- [K in keyof T['meta']['selectable'] | 'NOT' | 'OR' | 'IN']?: K extends 'NOT' ? MaybeArray<WhereArg<T>> : K extends 'OR' ? MaybeArray<WhereArg<T>>[] : K extends 'IN' ? MaybeArray<{
1709
+ [K in keyof T['meta']['selectable'] | 'NOT' | 'OR' | 'IN']?: K extends 'NOT' ? WhereArg<T> | WhereArgs<T> : K extends 'OR' ? (WhereArg<T> | WhereArgs<T>)[] : K extends 'IN' ? MaybeArray<{
1612
1710
  columns: (keyof T['meta']['selectable'])[];
1613
1711
  values: unknown[][] | QueryBase | Expression;
1614
1712
  }> : T['meta']['selectable'][K]['column']['queryType'] | null | ColumnOperators<T['meta']['selectable'], K> | QueryOrExpression<T['meta']['selectable'][K]['column']['queryType'] | null> | ((q: T) => QueryOrExpression<T['meta']['selectable'][K]['column']['queryType'] | null>);
@@ -1622,9 +1720,9 @@ type WhereArg<T extends PickQueryMetaRelations> = {
1622
1720
  * ```
1623
1721
  */
1624
1722
  type WhereQueryBuilder<T extends PickQueryRelations> = RelationsBase extends T['relations'] ? {
1625
- [K in keyof T]: K extends keyof QueryBase | keyof Where | keyof ExpressionMethods | 'sql' ? T[K] : never;
1723
+ [K in keyof T]: K extends keyof QueryBase | keyof Where | keyof ExpressionMethods | 'sql' | 'get' | 'ref' ? T[K] : never;
1626
1724
  } : {
1627
- [K in keyof T]: K extends keyof T['relations'] ? T['relations'][K] : K extends keyof QueryBase | keyof Where | keyof ExpressionMethods | 'sql' ? T[K] : never;
1725
+ [K in keyof T]: K extends keyof T['relations'] ? T['relations'][K] : K extends keyof QueryBase | keyof Where | keyof ExpressionMethods | 'sql' | 'get' | 'ref' ? T[K] : never;
1628
1726
  };
1629
1727
  type WhereArgs<T extends PickQueryMetaRelations> = WhereArg<T>[];
1630
1728
  type WhereNotArgs<T extends PickQueryMetaRelations> = [WhereArg<T>];
@@ -1664,11 +1762,11 @@ declare const _queryWhereNotSql: <T>(q: T, args: SQLQueryArgs) => T;
1664
1762
  /**
1665
1763
  * Mutative {@link Where.orWhere}
1666
1764
  */
1667
- declare const _queryOr: <T extends PickQueryMetaRelations>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
1765
+ declare const _queryOr: <T extends PickQueryMetaRelations>(q: T, args: WhereArgs<T>) => WhereResult<T>;
1668
1766
  /**
1669
1767
  * Mutative {@link Where.orWhereNot}
1670
1768
  */
1671
- declare const _queryOrNot: <T extends PickQueryMetaRelations>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
1769
+ declare const _queryOrNot: <T extends PickQueryMetaRelations>(q: T, args: WhereArgs<T>) => WhereResult<T>;
1672
1770
  /**
1673
1771
  * Mutative {@link Where.whereIn}
1674
1772
  */
@@ -2122,13 +2220,13 @@ declare class Where {
2122
2220
  *
2123
2221
  * @param args - {@link WhereArgs} will be joined with `OR`
2124
2222
  */
2125
- orWhere<T extends PickQueryMetaRelations>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
2223
+ orWhere<T extends PickQueryMetaRelations>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
2126
2224
  /**
2127
2225
  * `orWhereNot` takes the same arguments as {@link orWhere}, and prepends each condition with `NOT` just as {@link whereNot} does.
2128
2226
  *
2129
2227
  * @param args - {@link WhereArgs} will be prefixed with `NOT` and joined with `OR`
2130
2228
  */
2131
- orWhereNot<T extends PickQueryMetaRelations>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
2229
+ orWhereNot<T extends PickQueryMetaRelations>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
2132
2230
  /**
2133
2231
  * `whereIn` and related methods are for the `IN` operator to check for inclusion in a list of values.
2134
2232
  *
@@ -2448,7 +2546,7 @@ declare class DynamicRawSQL<T extends QueryColumn, ColumnTypes = DefaultColumnTy
2448
2546
  }
2449
2547
  declare function raw<T = never>(...args: StaticSQLArgs): RawSQL<QueryColumn<T>>;
2450
2548
  declare function raw<T = never>(...args: [DynamicSQLArg]): DynamicRawSQL<QueryColumn<T>>;
2451
- declare const countSelect: RawSQL<QueryColumn<unknown, orchid_core.CoreBaseOperators>, DefaultColumnTypes<ColumnSchemaConfig<orchid_core.ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, orchid_core.CoreBaseOperators, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>>>>[];
2549
+ declare const countSelect: RawSQL<QueryColumn<unknown, any>, DefaultColumnTypes<ColumnSchemaConfig<orchid_core.ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, any, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>>>>[];
2452
2550
  declare function sqlQueryArgsToExpression(args: SQLQueryArgs): RawSQL<QueryColumn>;
2453
2551
  type SqlFn = <T, Args extends [sql: TemplateStringsArray, ...values: unknown[]] | [sql: string] | [values: RecordUnknown, sql?: string]>(this: T, ...args: Args) => Args extends [RecordUnknown] ? (...sql: TemplateLiteralArgs) => RawSQLBase<QueryColumn, T> : RawSQLBase<QueryColumn, T>;
2454
2552
  declare const sqlFn: SqlFn;
@@ -2940,7 +3038,7 @@ interface DefaultSchemaConfig extends ColumnSchemaConfig<ColumnType> {
2940
3038
  dateAsDate(): ParseColumn<DateBaseColumn<DefaultSchemaConfig>, unknown, Date>;
2941
3039
  enum<U extends string, T extends readonly [U, ...U[]]>(dataType: string, type: T): EnumColumn<DefaultSchemaConfig, unknown, U, T>;
2942
3040
  array<Item extends ArrayColumnValue>(item: Item): ArrayColumn<DefaultSchemaConfig, Item, unknown, unknown, unknown>;
2943
- json<T>(): JSONColumn<T, DefaultSchemaConfig>;
3041
+ json<T extends MaybeArray<string | number | boolean | RecordUnknown>>(): JSONColumn<T, DefaultSchemaConfig>;
2944
3042
  inputSchema(): undefined;
2945
3043
  outputSchema(): undefined;
2946
3044
  querySchema(): undefined;
@@ -2968,12 +3066,10 @@ interface DefaultSchemaConfig extends ColumnSchemaConfig<ColumnType> {
2968
3066
  declare const defaultSchemaConfig: DefaultSchemaConfig;
2969
3067
 
2970
3068
  type SoftDeleteOption<Shape extends QueryColumns> = true | keyof Shape;
2971
- interface QueryWithSoftDelete extends PickQueryMetaResult {
2972
- meta: QueryMetaBase & {
2973
- scopes: {
2974
- nonDeleted: unknown;
2975
- };
2976
- };
3069
+ interface QueryWithSoftDelete extends PickQueryResult {
3070
+ meta: QueryMetaBase<{
3071
+ nonDeleted: true;
3072
+ }>;
2977
3073
  }
2978
3074
  /**
2979
3075
  * `softDelete` configures the table to set `deletedAt` to current time instead of deleting records.
@@ -3258,7 +3354,7 @@ interface DbResult<ColumnTypes> extends Db<string, never, never, never, never, n
3258
3354
  * })
3259
3355
  * ```
3260
3356
  */
3261
- declare const createDb: <SchemaConfig extends ColumnSchemaConfig<ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, orchid_core.CoreBaseOperators, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>> = DefaultSchemaConfig, ColumnTypes = DefaultColumnTypes<SchemaConfig>>({ log, logger, snakeCase, nowSQL, schemaConfig, columnTypes: ctOrFn, ...options }: DbOptions<SchemaConfig, ColumnTypes>) => DbResult<ColumnTypes>;
3357
+ declare const createDb: <SchemaConfig extends ColumnSchemaConfig<ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, any, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>> = DefaultSchemaConfig, ColumnTypes = DefaultColumnTypes<SchemaConfig>>({ log, logger, snakeCase, nowSQL, schemaConfig, columnTypes: ctOrFn, ...options }: DbOptions<SchemaConfig, ColumnTypes>) => DbResult<ColumnTypes>;
3262
3358
  declare const _initQueryBuilder: (adapter: Adapter, columnTypes: unknown, transactionStorage: AsyncLocalStorage<TransactionState>, commonOptions: DbTableOptions<undefined, QueryColumns>, options: DbSharedOptions) => Db;
3263
3359
 
3264
3360
  type ToSQLCtx = {
@@ -3299,6 +3395,7 @@ declare const getSqlText: (sql: Sql) => string;
3299
3395
 
3300
3396
  type AliasOrTable<T extends PickQueryMetaTable> = T['meta']['as'] extends string ? T['meta']['as'] : T['table'] extends string ? T['table'] : never;
3301
3397
  type SelectableOrExpression<T extends PickQueryMeta = PickQueryMeta, C extends QueryColumn = QueryColumn> = '*' | keyof T['meta']['selectable'] | Expression<C>;
3398
+ type SelectableOrExpressions<T extends PickQueryMeta = PickQueryMeta, C extends QueryColumn = QueryColumn> = ('*' | keyof T['meta']['selectable'] | Expression<C>)[];
3302
3399
  type ExpressionOutput<T extends PickQueryMeta, Expr extends SelectableOrExpression<T>> = Expr extends keyof T['meta']['selectable'] ? T['meta']['selectable'][Expr]['column'] : Expr extends Expression ? Expr['result']['value'] : never;
3303
3400
  declare const getClonedQueryData: (query: QueryData) => QueryData;
3304
3401
  declare const getQueryAs: (q: {
@@ -3336,7 +3433,7 @@ declare function _queryGet<T extends QueryGetSelf, Arg extends GetArg<T>>(self:
3336
3433
  declare function _queryGetOptional<T extends QueryGetSelf, Arg extends GetArg<T>>(self: T, arg: Arg): GetResultOptional<T, Arg>;
3337
3434
 
3338
3435
  declare const isSelectingCount: (q: PickQueryQ) => boolean;
3339
- type QueryReturnsAgg<T, C, Op extends CoreBaseOperators> = SetQueryReturnsColumnOrThrow<T, QueryColumn<C, Op>> & Op;
3436
+ type QueryReturnsAgg<T, C, Op> = SetQueryReturnsColumnOrThrow<T, QueryColumn<C, Op>> & Op;
3340
3437
  type CountReturn<T> = QueryReturnsAgg<T, number, OperatorsNumber> & {
3341
3438
  isCount: true;
3342
3439
  };
@@ -3803,7 +3900,7 @@ declare class Clear {
3803
3900
  clear<T extends Query>(this: T, ...clears: ClearStatement[]): T;
3804
3901
  }
3805
3902
 
3806
- interface CreateSelf extends QueryBase {
3903
+ interface CreateSelf extends PickQueryMetaResultRelationsWithDataReturnTypeShape, PickQueryUniqueProperties {
3807
3904
  inputType: RecordUnknown;
3808
3905
  }
3809
3906
  type CreateData<T extends CreateSelf, BelongsToData = CreateBelongsToData<T>> = RelationsBase extends T['relations'] ? CreateDataWithDefaults<T, keyof T['meta']['defaults']> : CreateRelationsData<T, BelongsToData>;
@@ -3975,7 +4072,7 @@ declare class Create {
3975
4072
  * const createdCount = await db.table.insertMany([data, data, data]);
3976
4073
  * ```
3977
4074
  *
3978
- * Because of a limitation of Postgres protocol, queries having more than **65536** are going to fail in runtime.
4075
+ * Because of a limitation of Postgres protocol, queries having more than **65535** of values are going to fail in runtime.
3979
4076
  * To solve this seamlessly, OrchidORM will automatically batch such queries, and wrap them into a transaction, unless they are already in a transaction.
3980
4077
  *
3981
4078
  * ```ts
@@ -4778,153 +4875,6 @@ declare abstract class QueryHooks {
4778
4875
  afterDeleteCommit<T extends PickQueryShape, S extends HookSelect<T>>(this: T, select: S, cb: AfterHook<S, T['shape']>): T;
4779
4876
  }
4780
4877
 
4781
- type JsonColumnName<T extends PickQueryMeta> = {
4782
- [K in keyof T['meta']['selectable']]: T['meta']['selectable'][K]['column']['dataType'] extends 'jsonb' ? K : never;
4783
- }[keyof T['meta']['selectable']] & string;
4784
- type ColumnOrJsonMethod<T extends PickQueryMeta> = JsonColumnName<T> | JsonItem;
4785
- type JsonSetResult<T extends PickQueryMetaShapeResultReturnType, Column extends ColumnOrJsonMethod<T>, As extends string> = JsonItem<As, Column extends keyof T['shape'] ? T['shape'][Column] : Column extends JsonItem ? Column['__json'][2] : QueryColumn> & AddQuerySelect<T, Record<As, Column extends keyof T['shape'] ? T['shape'][Column] : Column extends JsonItem ? Column['__json'][2] : QueryColumn>>;
4786
- type JsonPathQueryResult<T extends PickQueryMetaResultReturnType, As extends string, Type extends QueryColumn> = JsonItem & AddQuerySelect<T, {
4787
- [K in As]: Type;
4788
- }>;
4789
- declare abstract class JsonModifiers {
4790
- /**
4791
- * Return a JSON value/object/array where a given value is set at the given path.
4792
- * The path is an array of keys to access the value.
4793
- *
4794
- * Can be used in `update` callback.
4795
- *
4796
- * ```ts
4797
- * const result = await db.table.jsonSet('data', ['name'], 'new value').take();
4798
- *
4799
- * expect(result.data).toEqual({ name: 'new value' });
4800
- * ```
4801
- *
4802
- * Optionally takes parameters of type `{ as?: string, createIfMissing?: boolean }`
4803
- *
4804
- * ```ts
4805
- * await db.table.jsonSet('data', ['name'], 'new value', {
4806
- * as: 'alias', // select data as `alias`
4807
- * createIfMissing: true, // ignored if missing by default
4808
- * });
4809
- * ```
4810
- *
4811
- * @param column - name of JSON column, or a result of a nested json method
4812
- * @param path - path to value inside the json
4813
- * @param value - value to set into the json
4814
- * @param options - `as` to alias the json value when selecting, `createIfMissing: true` will create a new JSON property if it didn't exist before
4815
- */
4816
- jsonSet<T extends PickQueryMetaShapeResultReturnType, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, column: Column, path: Array<string | number>, value: unknown, options?: {
4817
- as?: As;
4818
- createIfMissing?: boolean;
4819
- }): JsonSetResult<T, Column, As>;
4820
- /**
4821
- * Return a JSON value/object/array where a given value is inserted at the given JSON path. Value can be a single value or JSON object. If a value exists at the given path, the value is not replaced.
4822
- *
4823
- * Can be used in `update` callback.
4824
- *
4825
- * ```ts
4826
- * // imagine user has data = { tags: ['two'] }
4827
- * const result = await db.table.jsonInsert('data', ['tags', 0], 'one').take();
4828
- *
4829
- * // 'one' is inserted to 0 position
4830
- * expect(result.data).toEqual({ tags: ['one', 'two'] });
4831
- * ```
4832
- *
4833
- * Optionally takes parameters of type `{ as?: string, insertAfter?: boolean }`
4834
- *
4835
- * ```ts
4836
- * // imagine user has data = { tags: ['one'] }
4837
- * const result = await db.table
4838
- * .jsonInsert('data', ['tags', 0], 'two', {
4839
- * as: 'alias', // select as an alias
4840
- * insertAfter: true, // insert after the specified position
4841
- * })
4842
- * .take();
4843
- *
4844
- * // 'one' is inserted to 0 position
4845
- * expect(result.alias).toEqual({ tags: ['one', 'two'] });
4846
- * ```
4847
- * @param column - name of JSON column, or a result of a nested json method
4848
- * @param path - path to the array inside the json, last path element is index to insert into
4849
- * @param value - value to insert into the json array
4850
- * @param options - `as` to alias the json value when selecting, `insertAfter: true` to insert after the specified position
4851
- */
4852
- jsonInsert<T extends PickQueryMetaShapeResultReturnType, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, column: Column, path: Array<string | number>, value: unknown, options?: {
4853
- as?: As;
4854
- insertAfter?: boolean;
4855
- }): JsonSetResult<T, Column, As>;
4856
- /**
4857
- * Return a JSON value/object/array where a given value is removed at the given JSON path.
4858
- *
4859
- * Can be used in `update` callback.
4860
- *
4861
- * ```ts
4862
- * // imagine a user has data = { tags: ['one', 'two'] }
4863
- * const result = await db.table
4864
- * .jsonRemove(
4865
- * 'data',
4866
- * ['tags', 0],
4867
- * // optional parameters:
4868
- * {
4869
- * as: 'alias', // select as an alias
4870
- * },
4871
- * )
4872
- * .take();
4873
- *
4874
- * expect(result.alias).toEqual({ tags: ['two'] });
4875
- * ```
4876
- *
4877
- * @param column - name of JSON column, or a result of a nested json method
4878
- * @param path - path to the array inside the json, last path element is index to remove this element
4879
- * @param options - `as` to alias the json value when selecting
4880
- */
4881
- jsonRemove<T extends PickQueryMetaShapeResultReturnType, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, column: Column, path: Array<string | number>, options?: {
4882
- as?: As;
4883
- }): JsonSetResult<T, Column, As>;
4884
- /**
4885
- * Selects a value from JSON data using a JSON path.
4886
- *
4887
- * ```ts
4888
- * import { columnTypes } from 'orchid-orm';
4889
- *
4890
- * db.table.jsonPathQuery(
4891
- * columnTypes.text(3, 100), // type of the value
4892
- * 'data', // name of the JSON column
4893
- * '$.name', // JSON path
4894
- * 'name', // select value as name
4895
- *
4896
- * // Optionally supports `vars` and `silent` options
4897
- * // check Postgres docs for jsonb_path_query for details
4898
- * {
4899
- * vars: 'vars',
4900
- * silent: true,
4901
- * },
4902
- * );
4903
- * ```
4904
- *
4905
- * Nested JSON operations can be used in place of JSON column name:
4906
- *
4907
- * ```ts
4908
- * db.table.jsonPathQuery(
4909
- * columnTypes.text(3, 100),
4910
- * // Available: .jsonSet, .jsonInsert, .jsonRemove
4911
- * db.table.jsonSet('data', ['key'], 'value'),
4912
- * '$.name',
4913
- * 'name',
4914
- * );
4915
- * ```
4916
- *
4917
- * @param type - provide a column type to have a correct result type
4918
- * @param column - name of JSON column, or a result of a nested json method
4919
- * @param path - special JSON path string to reference a JSON value
4920
- * @param as - optional alias for the selected value
4921
- * @param options - supports `vars` and `silent`, check Postgres docs of `json_path_query` for these
4922
- */
4923
- jsonPathQuery<T extends PickQueryMetaShapeResultReturnType, As extends string, Type extends QueryColumn>(this: T, type: Type, column: ColumnOrJsonMethod<T>, path: string, as: As, options?: {
4924
- vars?: string;
4925
- silent?: boolean;
4926
- }): JsonPathQueryResult<T, As, Type>;
4927
- }
4928
4878
  declare abstract class JsonMethods {
4929
4879
  /**
4930
4880
  * Wraps the query in a way to select a single JSON string.
@@ -4989,13 +4939,12 @@ interface SelectSelf {
4989
4939
  withData: WithDataBase;
4990
4940
  }
4991
4941
  type SelectArg<T extends SelectSelf> = '*' | keyof T['meta']['selectable'];
4942
+ type SelectArgs<T extends SelectSelf> = ('*' | keyof T['meta']['selectable'])[];
4992
4943
  interface SelectAsArg<T extends SelectSelf> {
4993
- [K: string]: SelectAsValue<T>;
4944
+ [K: string]: keyof T['meta']['selectable'] | Expression | ((q: {
4945
+ [K in keyof T]: K extends keyof T['relations'] ? T['relations'][K]['relationConfig']['methodQuery'] : T[K];
4946
+ }) => QueryBase | Expression);
4994
4947
  }
4995
- type SelectAsValue<T extends SelectSelf> = keyof T['meta']['selectable'] | Expression | ((q: SelectSubQueryArg<T>) => QueryBase | Expression);
4996
- type SelectSubQueryArg<T extends SelectSelf> = {
4997
- [K in keyof T]: K extends keyof T['relations'] ? T['relations'][K]['relationConfig']['methodQuery'] : T[K];
4998
- };
4999
4948
  type SelectResult<T extends SelectSelf, Columns extends PropertyKey[]> = {
5000
4949
  [K in keyof T]: K extends 'result' ? ('*' extends Columns[number] ? {
5001
4950
  [K in Columns[number] | keyof T['shape'] as T['meta']['selectable'][K]['as']]: T['meta']['selectable'][K]['column'];
@@ -5009,15 +4958,17 @@ type SelectResult<T extends SelectSelf, Columns extends PropertyKey[]> = {
5009
4958
  } & QueryMetaHasSelect;
5010
4959
  type SelectResultObj<T extends SelectSelf, Obj> = {
5011
4960
  [K in keyof T]: K extends 'meta' ? T['meta'] & {
4961
+ hasSelect: true;
5012
4962
  selectable: SelectAsSelectable<Obj>;
5013
4963
  } : K extends 'result' ? {
5014
- [K in keyof Obj | (T['meta']['hasSelect'] extends true ? keyof T['result'] : never)]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : K extends keyof T['result'] ? T['result'][K] : never;
4964
+ [K in T['meta']['hasSelect'] extends true ? keyof Obj | keyof T['result'] : keyof Obj]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : K extends keyof T['result'] ? T['result'][K] : never;
5015
4965
  } : K extends 'then' ? QueryThen<GetQueryResult<T, {
5016
- [K in keyof Obj | (T['meta']['hasSelect'] extends true ? keyof T['result'] : never)]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : K extends keyof T['result'] ? T['result'][K] : never;
4966
+ [K in T['meta']['hasSelect'] extends true ? keyof Obj | keyof T['result'] : keyof Obj]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : K extends keyof T['result'] ? T['result'][K] : never;
5017
4967
  }>> : T[K];
5018
- } & QueryMetaHasSelect;
4968
+ };
5019
4969
  type SelectResultColumnsAndObj<T extends SelectSelf, Columns extends PropertyKey[], Obj> = {
5020
4970
  [K in keyof T]: K extends 'meta' ? T['meta'] & {
4971
+ hasSelect: true;
5021
4972
  selectable: SelectAsSelectable<Obj>;
5022
4973
  } : K extends 'result' ? // Combine previously selected items, all columns if * was provided,
5023
4974
  {
@@ -5025,7 +4976,7 @@ type SelectResultColumnsAndObj<T extends SelectSelf, Columns extends PropertyKey
5025
4976
  } & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown) : K extends 'then' ? QueryThen<GetQueryResult<T, {
5026
4977
  [K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> | keyof T['shape'] : Columns[number]) | keyof Obj as K extends keyof T['meta']['selectable'] ? T['meta']['selectable'][K]['as'] : K]: K extends keyof T['meta']['selectable'] ? T['meta']['selectable'][K]['column'] : K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : never;
5027
4978
  } & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown)>> : T[K];
5028
- } & QueryMetaHasSelect;
4979
+ };
5029
4980
  type SelectAsSelectable<Arg> = {
5030
4981
  [K in keyof Arg]: Arg[K] extends (q: never) => {
5031
4982
  returnType: 'value' | 'valueOrThrow';
@@ -5051,9 +5002,9 @@ declare const addParserForSelectItem: <T extends PickQueryMeta>(q: T, as: string
5051
5002
  declare const processSelectArg: <T extends SelectSelf>(q: T, as: string | undefined, arg: SelectArg<T>, columnAs?: string | getValueKey) => SelectItem | undefined;
5052
5003
  declare const setParserForSelectedString: (q: PickQueryQ, arg: string, as: string | getValueKey | undefined, columnAs?: string | getValueKey) => string;
5053
5004
  declare const getShapeFromSelect: (q: QueryBase, isSubQuery?: boolean) => QueryColumns;
5054
- declare function _querySelect<T extends SelectSelf, Columns extends SelectArg<T>[]>(q: T, columns: Columns): SelectResult<T, Columns>;
5005
+ declare function _querySelect<T extends SelectSelf, Columns extends SelectArgs<T>>(q: T, columns: Columns): SelectResult<T, Columns>;
5055
5006
  declare function _querySelect<T extends SelectSelf, Obj extends SelectAsArg<T>>(q: T, obj: Obj): SelectResultObj<T, Obj>;
5056
- declare function _querySelect<T extends SelectSelf, Columns extends SelectArg<T>[], Obj extends SelectAsArg<T>>(q: T, args: [...columns: Columns, obj: Obj]): SelectResultColumnsAndObj<T, Columns, Obj>;
5007
+ declare function _querySelect<T extends SelectSelf, Columns extends SelectArgs<T>, Obj extends SelectAsArg<T>>(q: T, args: [...columns: Columns, obj: Obj]): SelectResultColumnsAndObj<T, Columns, Obj>;
5057
5008
  declare class Select {
5058
5009
  /**
5059
5010
  * Takes a list of columns to be selected, and by default, the query builder will select all columns of the table.
@@ -5116,9 +5067,9 @@ declare class Select {
5116
5067
  * .where({ 'author.isPopular': true });
5117
5068
  * ```
5118
5069
  */
5119
- select<T extends SelectSelf, Columns extends SelectArg<T>[]>(this: T, ...args: Columns): SelectResult<T, Columns>;
5070
+ select<T extends SelectSelf, Columns extends SelectArgs<T>>(this: T, ...args: Columns): SelectResult<T, Columns>;
5120
5071
  select<T extends SelectSelf, Obj extends SelectAsArg<T>>(this: T, obj: Obj): SelectResultObj<T, Obj>;
5121
- select<T extends SelectSelf, Columns extends SelectArg<T>[], Obj extends SelectAsArg<T>>(this: T, ...args: [...columns: Columns, obj: Obj]): SelectResultColumnsAndObj<T, Columns, Obj>;
5072
+ select<T extends SelectSelf, Columns extends SelectArgs<T>, Obj extends SelectAsArg<T>>(this: T, ...args: [...columns: Columns, obj: Obj]): SelectResultColumnsAndObj<T, Columns, Obj>;
5122
5073
  /**
5123
5074
  * When querying the table or creating records, all columns are selected by default,
5124
5075
  * but updating and deleting queries are returning affected row counts by default.
@@ -5290,9 +5241,11 @@ interface WithArgsOptions {
5290
5241
  interface WithRecursiveOptions extends WithArgsOptions {
5291
5242
  union?: 'UNION' | 'UNION ALL' | 'INTERSECT' | 'INTERSECT ALL' | 'EXCEPT' | 'EXCEPT ALL';
5292
5243
  }
5293
- type WithQueryBuilder<T extends PickQueryWithDataColumnTypes> = {
5294
- [K in keyof Query]: K extends 'sql' ? SqlMethod<T['columnTypes']>['sql'] : K extends 'relations' ? EmptyObject : K extends 'withData' ? T['withData'] : Query[K];
5295
- };
5244
+ interface WithQueryBuilder<T extends PickQueryWithDataColumnTypes> extends Query {
5245
+ sql: SqlMethod<T['columnTypes']>['sql'];
5246
+ relations: EmptyObject;
5247
+ withData: T['withData'];
5248
+ }
5296
5249
  type WithResult<T extends PickQueryMetaWithDataColumnTypes, Name extends string, Q extends PickQueryResult> = {
5297
5250
  [K in keyof T]: K extends 'meta' ? {
5298
5251
  [K in keyof T['meta']]: K extends 'kind' ? 'select' : T['meta'][K];
@@ -5303,7 +5256,7 @@ type WithResult<T extends PickQueryMetaWithDataColumnTypes, Name extends string,
5303
5256
  } : K extends keyof T['withData'] ? T['withData'][K] : never;
5304
5257
  } : T[K];
5305
5258
  };
5306
- type WithSqlResult<T extends PickQueryWithDataColumnTypes, Name extends string, Shape extends ColumnsShapeBase> = {
5259
+ type WithSqlResult<T extends PickQueryWithDataColumnTypes, Name extends string, Shape extends QueryColumns> = {
5307
5260
  [K in keyof T]: K extends 'withData' ? {
5308
5261
  [K in Name | keyof T['withData']]: K extends Name ? {
5309
5262
  table: Name;
@@ -5377,7 +5330,7 @@ declare class WithMethods {
5377
5330
  * ```
5378
5331
  */
5379
5332
  with<T extends PickQueryMetaWithDataColumnTypes, Name extends string, Q>(this: T, name: Name, query: Q | ((q: WithQueryBuilder<T>) => Q)): WithResult<T, Name, Q extends Query ? Q : never>;
5380
- with<T extends PickQueryMetaWithDataColumnTypes, Name extends string, Q extends Query>(this: T, name: Name, options: WithArgsOptions, query: Q | ((qb: WithQueryBuilder<T>) => Q)): WithResult<T, Name, Q>;
5333
+ with<T extends PickQueryMetaWithDataColumnTypes, Name extends string, Q extends Query>(this: T, name: Name, options: WithArgsOptions, query: Q | ((q: WithQueryBuilder<T>) => Q)): WithResult<T, Name, Q>;
5381
5334
  withRecursive<T extends PickQueryMetaWithDataColumnTypes, Name extends string, Q extends Query, Result = WithResult<T, Name, Q>>(this: T, name: Name, base: Q | ((qb: WithQueryBuilder<T>) => Q), recursive: (qb: {
5382
5335
  [K in keyof Result]: K extends 'result' ? Q['result'] : Result[K];
5383
5336
  }) => Query): Result;
@@ -5388,14 +5341,14 @@ declare class WithMethods {
5388
5341
  withSql<T extends PickQueryWithDataColumnTypes, Name extends string, Shape extends ColumnsShapeBase>(this: T, name: Name, shape: (t: T['columnTypes']) => Shape, expr: (q: T) => Expression): WithSqlResult<T, Name, Shape>;
5389
5342
  }
5390
5343
 
5391
- type UnionArg<T extends PickQueryResult> = {
5344
+ type UnionArgs<T extends PickQueryResult> = ({
5392
5345
  result: {
5393
5346
  [K in keyof T['result']]: {
5394
5347
  queryType: T['result'][K]['queryType'];
5395
5348
  };
5396
5349
  };
5397
- } | ((q: T) => Expression);
5398
- declare const _queryUnion: <T extends Query>(base: T, args: UnionArg<T>[], k: UnionKind) => T;
5350
+ } | ((q: T) => Expression))[];
5351
+ declare const _queryUnion: <T extends Query>(base: T, args: UnionArgs<T>, k: UnionKind) => T;
5399
5352
  declare class Union {
5400
5353
  /**
5401
5354
  * Creates a union query, takes one or more queries or SQL expressions.
@@ -5451,58 +5404,46 @@ declare class Union {
5451
5404
  *
5452
5405
  * @param args - array of queries or SQL expressions
5453
5406
  */
5454
- union<T extends PickQueryResult>(this: T, ...args: UnionArg<T>[]): T;
5407
+ union<T extends PickQueryResult>(this: T, ...args: UnionArgs<T>): T;
5455
5408
  /**
5456
5409
  * Same as {@link union}, but allows duplicated rows.
5457
5410
  *
5458
5411
  * @param args - array of queries or SQL expressions
5459
5412
  */
5460
- unionAll<T extends PickQueryResult>(this: T, ...args: UnionArg<T>[]): T;
5413
+ unionAll<T extends PickQueryResult>(this: T, ...args: UnionArgs<T>): T;
5461
5414
  /**
5462
5415
  * Same as {@link union}, but uses a `INTERSECT` SQL keyword instead
5463
5416
  *
5464
5417
  * @param args - array of queries or SQL expressions
5465
5418
  */
5466
- intersect<T extends PickQueryResult>(this: T, ...args: UnionArg<T>[]): T;
5419
+ intersect<T extends PickQueryResult>(this: T, ...args: UnionArgs<T>): T;
5467
5420
  /**
5468
5421
  * Same as {@link intersect}, but allows duplicated rows.
5469
5422
  *
5470
5423
  * @param args - array of queries or SQL expressions
5471
5424
  */
5472
- intersectAll<T extends PickQueryResult>(this: T, ...args: UnionArg<T>[]): T;
5425
+ intersectAll<T extends PickQueryResult>(this: T, ...args: UnionArgs<T>): T;
5473
5426
  /**
5474
5427
  * Same as {@link union}, but uses an `EXCEPT` SQL keyword instead
5475
5428
  *
5476
5429
  * @param args - array of queries or SQL expressions
5477
5430
  */
5478
- except<T extends PickQueryResult>(this: T, ...args: UnionArg<T>[]): T;
5431
+ except<T extends PickQueryResult>(this: T, ...args: UnionArgs<T>): T;
5479
5432
  /**
5480
5433
  * Same as {@link except}, but allows duplicated rows.
5481
5434
  *
5482
5435
  * @param args - array of queries or SQL expressions
5483
5436
  */
5484
- exceptAll<T extends PickQueryResult>(this: T, ...args: UnionArg<T>[]): T;
5437
+ exceptAll<T extends PickQueryResult>(this: T, ...args: UnionArgs<T>): T;
5485
5438
  }
5486
5439
 
5487
- type UpdateSelf = {
5488
- [K in 'inputType' | 'relations' | UpdateColumnArgKeys]: Query[K];
5489
- };
5440
+ interface UpdateSelf extends PickQueryMetaResultRelationsWithDataReturnTypeShape {
5441
+ inputType: RecordUnknown;
5442
+ }
5490
5443
  type UpdateData<T extends UpdateSelf> = {
5491
- [K in keyof T['inputType']]?: UpdateColumn<T, K>;
5492
- } & {
5493
- [K in keyof T['relations']]?: UpdateRelationData<T, T['relations'][K]['relationConfig']>;
5444
+ [K in keyof T['inputType'] | keyof T['relations']]?: K extends keyof T['inputType'] ? UpdateColumn<T, K> : UpdateRelationData<T, T['relations'][K]['relationConfig']>;
5494
5445
  };
5495
- type UpdateColumnArgKeys = keyof JsonModifiers | keyof ExpressionMethods | 'sql' | 'meta' | 'shape' | 'result' | 'returnType' | 'columnTypes';
5496
- interface UpdateQueryOrExpression<T> extends QueryOrExpression<T> {
5497
- meta: {
5498
- kind: 'select';
5499
- };
5500
- }
5501
- type UpdateColumn<T extends UpdateSelf, Key extends keyof T['inputType']> = T['inputType'][Key] | QueryOrExpression<T['inputType'][Key]> | {
5502
- [K in keyof Query]: K extends 'then' ? QueryThen<T['inputType'][Key]> : Query[K];
5503
- } | ((q: {
5504
- [K in keyof T['relations'] | UpdateColumnArgKeys]: K extends keyof T['relations'] ? T['relations'][K] : K extends UpdateColumnArgKeys ? T[K] : never;
5505
- }) => JsonItem | UpdateQueryOrExpression<T['inputType'][Key]>);
5446
+ type UpdateColumn<T extends UpdateSelf, Key extends keyof T['inputType']> = T['inputType'][Key] | QueryOrExpression<T['inputType'][Key]> | ((q: T) => QueryOrExpression<T['inputType'][Key]>);
5506
5447
  type UpdateRelationData<T extends UpdateSelf, Rel extends RelationConfigBase> = QueryReturnsAll<T['returnType']> extends true ? Rel['dataForUpdate'] : Rel['one'] extends true ? Rel['dataForUpdate'] | Rel['dataForUpdateOne'] : Rel['dataForUpdate'] & Rel['dataForUpdateOne'];
5507
5448
  type UpdateArg<T extends UpdateSelf> = T['meta']['hasWhere'] extends true ? UpdateData<T> : never;
5508
5449
  type UpdateRawArgs<T extends UpdateSelf> = T['meta']['hasWhere'] extends true ? SQLQueryArgs : never;
@@ -5918,7 +5859,7 @@ declare module './aggregate' {
5918
5859
  * @param search - name of the search to use the query from
5919
5860
  * @param options - `text` for a text source, `options` for `ts_headline` options
5920
5861
  */
5921
- headline<T extends PickQueryMeta>(this: T, search: HeadlineSearchArg<T>, options?: HeadlineParams<T>): ColumnExpression<QueryColumn<string>>;
5862
+ headline<T extends PickQueryMeta>(this: T, search: HeadlineSearchArg<T>, options?: HeadlineParams<T>): SetQueryReturnsColumnOrThrow<T, QueryColumn<string>>;
5922
5863
  }
5923
5864
  }
5924
5865
  type SearchArg<T extends PickQueryMeta, As extends string> = {
@@ -6144,22 +6085,14 @@ declare class SearchMethods {
6144
6085
  search<T extends PickQueryMeta, As extends string>(this: T, arg: SearchArg<T, As>): WhereSearchResult<T, As>;
6145
6086
  }
6146
6087
 
6147
- type OrCreateArg<T extends Query, BT> = CreateData<T, BT> | (() => CreateData<T, BT>);
6148
- type UpsertArg<T extends Query, Data, BT> = {
6149
- update: Data;
6150
- create: CreateData<T, BT> | ((update: Data) => CreateData<T, BT>);
6151
- } | UpsertArgWithData<T, Data, BT>;
6152
- type UpsertArgWithData<T extends Query, Data, BT> = {
6153
- data: Data;
6154
- create: UpsertCreate<keyof Data, CreateData<T, BT>> | ((update: Data) => UpsertCreate<keyof Data, CreateData<T, BT>>);
6155
- };
6088
+ type OrCreateArg<Data> = Data | (() => Data);
6156
6089
  type UpsertCreate<DataKey extends PropertyKey, CD> = {
6157
6090
  [K in keyof CD as K extends DataKey ? never : K]: CD[K];
6158
6091
  } & {
6159
6092
  [K in DataKey]?: K extends keyof CD ? CD[K] : never;
6160
6093
  };
6161
- type UpsertResult<T extends PickQueryMetaResult> = T['meta']['hasSelect'] extends true ? SetQueryReturnsOneKind<T, 'upsert'> : SetQueryReturnsVoid<SetQueryKind<T, 'upsert'>>;
6162
- type UpsertThis = WhereResult<Query> & {
6094
+ type UpsertResult<T extends PickQueryMetaResult> = T['meta']['hasSelect'] extends true ? SetQueryReturnsOneKind<T, 'upsert'> : SetQueryReturnsVoidKind<T, 'upsert'>;
6095
+ type UpsertThis = UpdateSelf & CreateSelf & QueryMetaHasWhere & {
6163
6096
  returnType: 'one' | 'oneOrThrow';
6164
6097
  };
6165
6098
  declare class QueryUpsertOrCreate {
@@ -6256,7 +6189,13 @@ declare class QueryUpsertOrCreate {
6256
6189
  *
6257
6190
  * @param data - `update` property for the data to update, `create` property for the data to create
6258
6191
  */
6259
- upsert<T extends UpsertThis, Update extends UpdateData<T>, BT extends CreateBelongsToData<T>>(this: T, data: UpsertArg<T, Update, BT>): UpsertResult<T>;
6192
+ upsert<T extends UpsertThis, Update extends UpdateData<T>, BT extends CreateBelongsToData<T>>(this: T, data: {
6193
+ update: Update;
6194
+ create: CreateData<T, BT> | ((update: Update) => CreateData<T, BT>);
6195
+ } | {
6196
+ data: Update;
6197
+ create: UpsertCreate<keyof Update, CreateData<T, BT>> | ((update: Update) => UpsertCreate<keyof Update, CreateData<T, BT>>);
6198
+ }): UpsertResult<T>;
6260
6199
  /**
6261
6200
  * `orCreate` creates a record only if it was not found by conditions.
6262
6201
  *
@@ -6288,21 +6227,17 @@ declare class QueryUpsertOrCreate {
6288
6227
  *
6289
6228
  * @param data - the same data as for `create`, it may be returned from a callback
6290
6229
  */
6291
- orCreate<T extends UpsertThis, BT extends CreateBelongsToData<T>>(this: T, data: OrCreateArg<T, BT>): UpsertResult<T>;
6230
+ orCreate<T extends UpsertThis, BT extends CreateBelongsToData<T>>(this: T, data: OrCreateArg<CreateData<T, BT>>): UpsertResult<T>;
6292
6231
  }
6293
6232
 
6294
- type QueryTransformFn<T extends Query> = (input: T['then'] extends QueryThen<infer Data> ? Data : never) => unknown;
6295
- type QueryTransform<T extends QueryBase, Data> = {
6296
- [K in keyof T]: K extends 'returnType' ? 'valueOrThrow' : K extends 'result' ? {
6297
- value: QueryColumn<Data>;
6298
- } : K extends 'then' ? QueryThen<Data> : T[K];
6299
- };
6300
6233
  declare class TransformMethods {
6301
6234
  /**
6302
6235
  * Transform the result of the query right after loading it.
6303
6236
  *
6304
6237
  * `transform` method should be called in the last order, other methods can't be chained after calling it.
6305
6238
  *
6239
+ * It is meant to transform the whole result of a query, for transforming individual records consider using {@link QueryMap.map}.
6240
+ *
6306
6241
  * The [hooks](/guide/hooks.html) that are going to run after the query will receive the query result **before** transferring.
6307
6242
  *
6308
6243
  * Consider the following example of a cursor-based pagination by `id`:
@@ -6349,14 +6284,66 @@ declare class TransformMethods {
6349
6284
  *
6350
6285
  * @param fn - function to transform query result with
6351
6286
  */
6352
- transform<T extends Query, Fn extends QueryTransformFn<T>>(this: T, fn: Fn): QueryTransform<T, ReturnType<Fn>>;
6287
+ transform<T extends Query, Result>(this: T, fn: (input: T['then'] extends QueryThen<infer Data> ? Data : never) => Result): {
6288
+ [K in keyof T]: K extends 'returnType' ? 'valueOrThrow' : K extends 'result' ? {
6289
+ value: QueryColumn<Result>;
6290
+ } : K extends 'then' ? QueryThen<Result> : T[K];
6291
+ };
6292
+ }
6293
+
6294
+ declare class QueryMap {
6295
+ /**
6296
+ * Use `map` to transform individual records of a query result.
6297
+ *
6298
+ * It accepts a single record and should return a single transformed record.
6299
+ *
6300
+ * For transforming the whole result of a query, consider using [transform](#transform) instead.
6301
+ *
6302
+ * The [hooks](/guide/hooks) that are going to run after the query will receive the query result **before** transformation.
6303
+ *
6304
+ * ```ts
6305
+ * // add a `titleLength` to every post
6306
+ * const posts = await db.post.limit(10).map((post) => ({
6307
+ * ...post,
6308
+ * titleLength: post.title.length,
6309
+ * }));
6310
+ *
6311
+ * posts[0].titleLength; // number
6312
+ *
6313
+ * // using the exact same `map` function to transform a single post
6314
+ * const singlePost = await db.post.find(id).map((post) => ({
6315
+ * ...post,
6316
+ * titleLength: post.title.length,
6317
+ * }));
6318
+ *
6319
+ * singlePost.titleLength; // number
6320
+ *
6321
+ * // can be used in sub-queries
6322
+ * const postsWithComments = await db.post.select('title', {
6323
+ * comments: (q) =>
6324
+ * q.comments.map((comment) => ({
6325
+ * ...comment,
6326
+ * truncatedContent: comment.content.slice(0, 100),
6327
+ * })),
6328
+ * });
6329
+ *
6330
+ * postsWithComments[0].comments[0].truncatedContent; // string
6331
+ * ```
6332
+ *
6333
+ * @param fn - function to transform an individual record
6334
+ */
6335
+ map<T extends Query, Result extends RecordUnknown>(this: T, fn: (input: QueryReturnsAll<T['returnType']> extends true ? T['then'] extends QueryThen<(infer Data)[]> ? Data : never : T['then'] extends QueryThen<infer Data> ? Data : never) => Result): {
6336
+ [K in keyof T]: K extends 'result' ? {
6337
+ [K in keyof Result]: QueryColumn<Result[K]>;
6338
+ } : K extends 'then' ? QueryThen<QueryReturnsAll<T['returnType']> extends true ? Result[] : Result> : T[K];
6339
+ };
6353
6340
  }
6354
6341
 
6355
6342
  interface WindowArg<T extends OrderArgSelf> {
6356
6343
  [K: string]: WindowArgDeclaration<T> | Expression;
6357
6344
  }
6358
6345
  interface WindowArgDeclaration<T extends OrderArgSelf = OrderArgSelf> {
6359
- partitionBy?: SelectableOrExpression<T> | SelectableOrExpression<T>[];
6346
+ partitionBy?: SelectableOrExpression<T> | SelectableOrExpressions<T>;
6360
6347
  order?: OrderArg<T>;
6361
6348
  }
6362
6349
  type WindowResult<T, W extends RecordUnknown> = T & {
@@ -6368,16 +6355,15 @@ type OrderArgSelf = PickQueryMetaResult;
6368
6355
  type OrderArg<T extends OrderArgSelf> = OrderArgKey<T> | OrderArgTsQuery<T> | {
6369
6356
  [K in OrderArgKey<T> | OrderArgTsQuery<T>]?: K extends OrderArgTsQuery<T> ? OrderTsQueryConfig : SortDir;
6370
6357
  } | Expression;
6358
+ type OrderArgs<T extends OrderArgSelf> = OrderArg<T>[];
6371
6359
  type OrderArgTsQuery<T extends OrderArgSelf> = string | undefined extends T['meta']['tsQuery'] ? never : Exclude<T['meta']['tsQuery'], undefined>;
6372
6360
  type OrderArgKey<T extends OrderArgSelf> = keyof T['meta']['selectable'] | {
6373
6361
  [K in keyof T['result']]: T['result'][K]['dataType'] extends 'array' | 'object' ? never : K;
6374
6362
  }[keyof T['result']];
6375
- type OrderArgs<T extends OrderArgSelf> = OrderArg<T>[];
6376
- type GroupArg<T extends PickQueryResult> = {
6363
+ type GroupArgs<T extends PickQueryResult> = ({
6377
6364
  [K in keyof T['result']]: T['result'][K]['dataType'] extends 'array' | 'object' ? never : K;
6378
- }[keyof T['result']] | Expression;
6379
- type FindArg<T extends PickQueryShapeSinglePrimaryKey> = T['internal']['singlePrimaryKey'] | Expression;
6380
- type QueryHelper<T extends PickQueryMetaShape, Args extends unknown[], Result> = {
6365
+ }[keyof T['result']] | Expression)[];
6366
+ interface QueryHelper<T extends PickQueryMetaShape, Args extends unknown[], Result> {
6381
6367
  <Q extends {
6382
6368
  returnType: QueryReturnType;
6383
6369
  meta: QueryMetaBase & {
@@ -6388,7 +6374,7 @@ type QueryHelper<T extends PickQueryMetaShape, Args extends unknown[], Result> =
6388
6374
  withData: WithDataBase;
6389
6375
  }>(q: Q, ...args: Args): Result extends Query ? MergeQuery<Q, Result> : Result;
6390
6376
  result: Result;
6391
- };
6377
+ }
6392
6378
  type QueryHelperResult<T extends QueryHelper<Query, unknown[], unknown>> = T['result'];
6393
6379
  type NarrowTypeResult<T extends PickQueryMetaResultReturnType, Narrow> = {
6394
6380
  [K in keyof T['result']]: K extends keyof Narrow ? {
@@ -6400,10 +6386,10 @@ declare const _queryAll: <T extends Query>(q: T) => SetQueryReturnsAll<T>;
6400
6386
  declare const _queryTake: <T extends PickQueryResult>(q: T) => SetQueryReturnsOne<T>;
6401
6387
  declare const _queryTakeOptional: <T extends PickQueryResult>(q: T) => SetQueryReturnsOneOptional<T>;
6402
6388
  declare const _queryExec: <T extends Query>(q: T) => never;
6403
- declare const _queryFindBy: <T extends QueryBase<EmptyObject>>(q: T, args: WhereArg<T>[]) => SetQueryReturnsOne<WhereResult<T>>;
6404
- declare const _queryFindByOptional: <T extends QueryBase<EmptyObject>>(q: T, args: WhereArg<T>[]) => SetQueryReturnsOneOptional<WhereResult<T>>;
6389
+ declare const _queryFindBy: <T extends QueryBase<EmptyObject>>(q: T, args: WhereArgs<T>) => SetQueryReturnsOne<WhereResult<T>>;
6390
+ declare const _queryFindByOptional: <T extends QueryBase<EmptyObject>>(q: T, args: WhereArgs<T>) => SetQueryReturnsOneOptional<WhereResult<T>>;
6405
6391
  declare const _queryRows: <T extends Query>(q: T) => SetQueryReturnsRows<T>;
6406
- interface QueryMethods<ColumnTypes> extends AsMethods, AggregateMethods, Select, FromMethods, Join, WithMethods, Union, JsonModifiers, JsonMethods, Create, Update, Delete, Transaction, For, Where, SearchMethods, Clear, Having, QueryLog, QueryHooks, QueryUpsertOrCreate, QueryGet, MergeQueryMethods, SqlMethod<ColumnTypes>, TransformMethods, ScopeMethods, SoftDeleteMethods, ExpressionMethods {
6392
+ interface QueryMethods<ColumnTypes> extends AsMethods, AggregateMethods, Select, FromMethods, Join, WithMethods, Union, JsonMethods, Create, Update, Delete, Transaction, For, Where, SearchMethods, Clear, Having, QueryLog, QueryHooks, QueryUpsertOrCreate, QueryGet, MergeQueryMethods, SqlMethod<ColumnTypes>, TransformMethods, QueryMap, ScopeMethods, SoftDeleteMethods, ExpressionMethods {
6407
6393
  }
6408
6394
  declare class QueryMethods<ColumnTypes> {
6409
6395
  /**
@@ -6515,7 +6501,7 @@ declare class QueryMethods<ColumnTypes> {
6515
6501
  *
6516
6502
  * @param columns - column names or a raw SQL
6517
6503
  */
6518
- distinct<T extends PickQueryMeta>(this: T, ...columns: SelectableOrExpression<T>[]): T;
6504
+ distinct<T extends PickQueryMeta>(this: T, ...columns: SelectableOrExpressions<T>): T;
6519
6505
  /**
6520
6506
  * Finds a single record by the primary key (id), throws [NotFoundError](/guide/error-handling.html) if not found.
6521
6507
  * Not available if the table has no or multiple primary keys.
@@ -6526,7 +6512,7 @@ declare class QueryMethods<ColumnTypes> {
6526
6512
  *
6527
6513
  * @param value - primary key value to find by
6528
6514
  */
6529
- find<T extends PickQueryShapeResultSinglePrimaryKey>(this: T, value: FindArg<T>): SetQueryReturnsOne<WhereResult<T>>;
6515
+ find<T extends PickQueryShapeResultSinglePrimaryKey>(this: T, value: T['internal']['singlePrimaryKey'] | Expression): SetQueryReturnsOne<T> & QueryMetaHasWhere;
6530
6516
  /**
6531
6517
  * Finds a single record with a given SQL, throws {@link NotFoundError} if not found:
6532
6518
  *
@@ -6539,7 +6525,7 @@ declare class QueryMethods<ColumnTypes> {
6539
6525
  *
6540
6526
  * @param args - SQL expression
6541
6527
  */
6542
- findBySql<T extends PickQueryResult>(this: T, ...args: SQLQueryArgs): SetQueryReturnsOne<WhereResult<T>>;
6528
+ findBySql<T extends PickQueryResult>(this: T, ...args: SQLQueryArgs): SetQueryReturnsOne<T> & QueryMetaHasWhere;
6543
6529
  /**
6544
6530
  * Finds a single record by the primary key (id), returns `undefined` when not found.
6545
6531
  * Not available if the table has no or multiple primary keys.
@@ -6550,7 +6536,7 @@ declare class QueryMethods<ColumnTypes> {
6550
6536
  *
6551
6537
  * @param value - primary key value to find by, or a raw SQL
6552
6538
  */
6553
- findOptional<T extends PickQueryShapeResultSinglePrimaryKey>(this: T, value: FindArg<T>): SetQueryReturnsOneOptional<WhereResult<T>>;
6539
+ findOptional<T extends PickQueryShapeResultSinglePrimaryKey>(this: T, value: T['internal']['singlePrimaryKey'] | Expression): SetQueryReturnsOneOptional<T> & QueryMetaHasWhere;
6554
6540
  /**
6555
6541
  * Finds a single record with a given SQL.
6556
6542
  * Returns `undefined` when not found.
@@ -6564,7 +6550,7 @@ declare class QueryMethods<ColumnTypes> {
6564
6550
  *
6565
6551
  * @param args - SQL expression
6566
6552
  */
6567
- findBySqlOptional<T extends PickQueryResult>(this: T, ...args: SQLQueryArgs): SetQueryReturnsOneOptional<WhereResult<T>>;
6553
+ findBySqlOptional<T extends PickQueryResult>(this: T, ...args: SQLQueryArgs): SetQueryReturnsOneOptional<T> & QueryMetaHasWhere;
6568
6554
  /**
6569
6555
  * Finds a single unique record, throws [NotFoundError](/guide/error-handling.html) if not found.
6570
6556
  * It accepts values of primary keys or unique indexes defined on the table.
@@ -6578,7 +6564,7 @@ declare class QueryMethods<ColumnTypes> {
6578
6564
  *
6579
6565
  * @param uniqueColumnValues - is derived from primary keys and unique indexes in the table
6580
6566
  */
6581
- findBy<T extends PickQueryResultUniqueColumns>(this: T, uniqueColumnValues: T['internal']['uniqueColumns']): SetQueryReturnsOne<WhereResult<T>>;
6567
+ findBy<T extends PickQueryResultUniqueColumns>(this: T, uniqueColumnValues: T['internal']['uniqueColumns']): SetQueryReturnsOne<T> & QueryMetaHasWhere;
6582
6568
  /**
6583
6569
  * Finds a single unique record, returns `undefined` if not found.
6584
6570
  * It accepts values of primary keys or unique indexes defined on the table.
@@ -6592,7 +6578,7 @@ declare class QueryMethods<ColumnTypes> {
6592
6578
  *
6593
6579
  * @param uniqueColumnValues - is derived from primary keys and unique indexes in the table
6594
6580
  */
6595
- findByOptional<T extends PickQueryResultUniqueColumns>(this: T, uniqueColumnValues: T['internal']['uniqueColumns']): SetQueryReturnsOneOptional<WhereResult<T>>;
6581
+ findByOptional<T extends PickQueryResultUniqueColumns>(this: T, uniqueColumnValues: T['internal']['uniqueColumns']): SetQueryReturnsOneOptional<T> & QueryMetaHasWhere;
6596
6582
  /**
6597
6583
  * Specifies the schema to be used as a prefix of a table name.
6598
6584
  *
@@ -6644,7 +6630,7 @@ declare class QueryMethods<ColumnTypes> {
6644
6630
  *
6645
6631
  * @param columns - column names or a raw SQL
6646
6632
  */
6647
- group<T extends PickQueryResult>(this: T, ...columns: GroupArg<T>[]): T;
6633
+ group<T extends PickQueryResult>(this: T, ...columns: GroupArgs<T>): T;
6648
6634
  /**
6649
6635
  * Add a window with `window` and use it later by its name for aggregate or window functions:
6650
6636
  *
@@ -7056,6 +7042,8 @@ interface PickQueryMetaResultRelationsWindowsColumnTypes extends PickQueryMetaRe
7056
7042
  }
7057
7043
  interface PickQueryWithDataColumnTypes extends PickQueryWithData, PickQueryColumnTypes {
7058
7044
  }
7045
+ interface PickQueryResultColumnTypes extends PickQueryResult, PickQueryColumnTypes {
7046
+ }
7059
7047
  interface PickQueryMetaWithDataColumnTypes extends PickQueryMeta, PickQueryWithData, PickQueryColumnTypes {
7060
7048
  }
7061
7049
  interface PickQueryMetaTable extends PickQueryMeta, PickQueryTable {
@@ -7175,7 +7163,7 @@ type SetQueryReturnsPluckColumnKindResult<T extends PickQueryMetaResult, Kind ex
7175
7163
  pluck: T['result']['value'];
7176
7164
  } : K extends 'returnType' ? 'pluck' : K extends 'result' ? Result : K extends 'then' ? QueryThen<T['result']['value']['outputType'][]> : T[K];
7177
7165
  } & QueryMetaHasSelect;
7178
- type SetQueryReturnsValueOrThrow<T extends PickQueryMeta, Arg extends GetStringArg<T>> = SetQueryReturnsColumnOrThrow<T, T['meta']['selectable'][Arg]['column']> & T['meta']['selectable'][Arg]['column']['operators'];
7166
+ type SetQueryReturnsValueOrThrow<T extends PickQueryMeta, Arg extends keyof T['meta']['selectable']> = SetQueryReturnsColumnOrThrow<T, T['meta']['selectable'][Arg]['column']> & T['meta']['selectable'][Arg]['column']['operators'];
7179
7167
  type SetQueryReturnsValueOptional<T extends PickQueryMeta, Arg extends GetStringArg<T>> = SetQueryReturnsColumnOptional<T, {
7180
7168
  [K in keyof T['meta']['selectable'][Arg]['column']]: K extends 'outputType' ? T['meta']['selectable'][Arg]['column'][K] | undefined : T['meta']['selectable'][Arg]['column'][K];
7181
7169
  }> & Omit<T['meta']['selectable'][Arg]['column']['operators'], 'equals' | 'not'> & OperatorsNullable<T['meta']['selectable'][Arg]['column']>;
@@ -7270,7 +7258,7 @@ interface ColumnFromDbParams {
7270
7258
  interface PickColumnData {
7271
7259
  data: ColumnData;
7272
7260
  }
7273
- declare abstract class ColumnType<Schema extends ColumnTypeSchemaArg = ColumnTypeSchemaArg, Type = unknown, InputSchema = any, Ops extends BaseOperators = BaseOperators, InputType = Type, OutputType = Type, OutputSchema = InputSchema, QueryType = InputType, QuerySchema = InputSchema> extends ColumnTypeBase<Schema, Type, InputSchema, Ops, InputType, OutputType, OutputSchema, QueryType, QuerySchema, ColumnData> {
7261
+ declare abstract class ColumnType<Schema extends ColumnTypeSchemaArg = ColumnTypeSchemaArg, Type = unknown, InputSchema = any, Ops = any, InputType = Type, OutputType = Type, OutputSchema = InputSchema, QueryType = InputType, QuerySchema = InputSchema> extends ColumnTypeBase<Schema, Type, InputSchema, Ops, InputType, OutputType, OutputSchema, QueryType, QuerySchema, ColumnData> {
7274
7262
  /**
7275
7263
  * Mark the column as a primary key.
7276
7264
  * This column type becomes an argument of the `.find` method.
@@ -7631,9 +7619,9 @@ interface DefaultColumnTypes<SchemaConfig extends ColumnSchemaConfig> extends Ti
7631
7619
  type(dataType: string): CustomTypeColumn<SchemaConfig>;
7632
7620
  domain(dataType: string): DomainColumn<SchemaConfig>;
7633
7621
  }
7634
- declare const makeColumnTypes: <SchemaConfig extends ColumnSchemaConfig<orchid_core.ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, orchid_core.CoreBaseOperators, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>>>(schema: SchemaConfig) => DefaultColumnTypes<SchemaConfig>;
7622
+ declare const makeColumnTypes: <SchemaConfig extends ColumnSchemaConfig<orchid_core.ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, any, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>>>(schema: SchemaConfig) => DefaultColumnTypes<SchemaConfig>;
7635
7623
 
7636
- declare const simplifyColumnDefault: (value?: string) => RawSQL<orchid_core.QueryColumn<unknown, orchid_core.CoreBaseOperators>, DefaultColumnTypes<orchid_core.ColumnSchemaConfig<ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, orchid_core.CoreBaseOperators, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>>>> | undefined;
7624
+ declare const simplifyColumnDefault: (value?: string) => RawSQL<orchid_core.QueryColumn<unknown, any>, DefaultColumnTypes<orchid_core.ColumnSchemaConfig<ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, any, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>>>> | undefined;
7637
7625
  declare const instantiateColumn: (typeFn: () => ColumnTypeBase, params: ColumnFromDbParams) => ColumnTypeBase;
7638
7626
 
7639
7627
  interface ColumnsShape {
@@ -7904,4 +7892,4 @@ type CopyResult<T extends PickQueryMeta> = SetQueryKind<T, 'copy'>;
7904
7892
  */
7905
7893
  declare function copyTableData<T extends PickQueryMetaShape>(query: T, arg: CopyArg<T>): CopyResult<T>;
7906
7894
 
7907
- export { Adapter, AdapterConfig, AdapterOptions, AddQueryDefaults, AddQuerySelect, AfterHook, AggregateMethods, AggregateOptions, AliasOrTable, ArrayColumn, ArrayColumnValue, ArrayData, AsMethods, AsQueryArg, BaseOperators, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanQueryColumn, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, CitextColumn, Clear, ClearStatement, CloneSelfKeys, ColumnData, ColumnExpression, ColumnFromDbParams, ColumnInfoQueryData, ColumnOperators, ColumnRefExpression, ColumnType, ColumnsByType, ColumnsShape, ColumnsShapeToNullableObject, ColumnsShapeToObject, ColumnsShapeToObjectArray, ColumnsShapeToPluck, CommonQueryData, ComputedColumnsBase, CopyOptions, CopyQueryData, Create, CreateBelongsToData, CreateColumn, CreateCtx, CreateData, CreateKind, CreateMethodsNames, CreateRelationsData, CreateRelationsDataOmittingFKeys, CreateSelf, CustomTypeColumn, DateBaseColumn, DateColumn, DateColumnInput, DateTimeBaseClass, DateTimeTzBaseClass, Db, DbDomainArg, DbDomainArgRecord, DbExtension, DbOptions, DbResult, DbSharedOptions, DbTableConstructor, DbTableOptionScopes, DbTableOptions, DecimalColumn, DecimalColumnData, DefaultColumnTypes, DefaultSchemaConfig, Delete, DeleteArgs, DeleteMethodsNames, DeleteQueryData, DeleteResult, DomainColumn, DoublePrecisionColumn, DynamicRawSQL, EnumColumn, ExpressionMethods, ExpressionOutput, FnExpression, FnExpressionArgs, FnExpressionArgsPairs, FnExpressionArgsValue, For, FromArg, FromMethods, FromQuerySelf, FromResult, GetArg, GetColumnInfo, GetQueryResult, GetResult, GetResultOptional, GetStringArg, GroupArg, Having, HavingItem, HookAction, HookSelect, IdentityColumn, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, IsolationLevel, JSONColumn, JSONTextColumn, Join, JoinArgs, JoinCallback, JoinFirstArg, JoinItem, JoinItemArgs, JoinLateralCallback, JoinLateralItem, JoinLateralResult, JoinOverrides, JoinQueryBuilder, JoinQueryMethod, JoinResult, JoinedParsers, JoinedShapes, JsonItem, JsonMethods, JsonModifiers, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MapTableScopesOption, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NoPrimaryKeyOption, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumnData, OnConflictMerge, OnConflictQueryBuilder, OnConflictSet, OnConflictTarget, OnMethods, Operator, Operators, OperatorsAny, OperatorsArray, OperatorsBoolean, OperatorsDate, OperatorsJson, OperatorsNumber, OperatorsText, OperatorsTime, OrCreateArg, OrExpression, OrchidOrmError, OrchidOrmInternalError, OrderArg, OrderArgSelf, OrderArgs, OrderItem, OrderTsQueryConfig, Over, PathColumn, PickColumnData, PickQueryBaseQuery, PickQueryColumnTypes, PickQueryDataShapeAndJoinedShapes, PickQueryInternal, PickQueryMetaRelations, PickQueryMetaResultRelations, PickQueryMetaResultRelationsWindows, PickQueryMetaResultRelationsWindowsColumnTypes, PickQueryMetaResultRelationsWithDataReturnType, PickQueryMetaResultRelationsWithDataReturnTypeShape, PickQueryMetaResultReturnTypeWithDataWindows, PickQueryMetaResultReturnTypeWithDataWindowsTable, PickQueryMetaShapeRelationsWithData, PickQueryMetaTable, PickQueryMetaTableShape, PickQueryMetaTableShapeReturnTypeWithData, PickQueryMetaWithData, PickQueryMetaWithDataColumnTypes, PickQueryQ, PickQueryQAndBaseQuery, PickQueryQAndInternal, PickQueryRelations, PickQueryRelationsWithData, PickQueryShapeResultSinglePrimaryKey, PickQueryShapeSinglePrimaryKey, PickQuerySinglePrimaryKey, PickQueryWindows, PickQueryWithData, PickQueryWithDataColumnTypes, PointColumn, PolygonColumn, Query, QueryAfterHook, QueryArraysResult, QueryBase, QueryBaseThen, QueryBeforeHook, QueryData, QueryDataFromItem, QueryDataJoinTo, QueryDefaultReturnData, QueryError, QueryErrorName, QueryGet, QueryGetSelf, QueryHelperResult, QueryHookSelect, QueryHooks, QueryInternal, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMetaHasSelect, QueryMetaHasWhere, QueryMethods, QueryOrExpression, QueryOrExpressionBooleanOrNullResult, QueryResult, QueryReturnsAll, QueryScopeData, QueryScopes, QuerySourceItem, QueryTransform, QueryTransformFn, QueryUpsertOrCreate, QueryWithComputed, QueryWithTable, RawSQL, RealColumn, RecordOfColumnsShapeBase, RefExpression, RelationConfigBase, RelationConfigDataForCreate, RelationJoinQuery, RelationQuery, RelationQueryBase, RelationsBase, SearchArg, SearchMethods, SearchWeight, SearchWeightRecord, Select, SelectArg, SelectAs, SelectItem, SelectQueryData, SelectSubQueryResult, SelectableFromShape, SelectableOfType, SelectableOrExpression, SelectableOrExpressionOfType, SerialColumn, SerialColumnData, SetQueryKind, SetQueryKindResult, SetQueryReturnsAll, SetQueryReturnsAllKind, SetQueryReturnsAllKindResult, SetQueryReturnsColumnInfo, SetQueryReturnsColumnKind, SetQueryReturnsColumnKindResult, SetQueryReturnsColumnOptional, SetQueryReturnsColumnOrThrow, SetQueryReturnsOne, SetQueryReturnsOneKind, SetQueryReturnsOneKindResult, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsPluckColumn, SetQueryReturnsPluckColumnKind, SetQueryReturnsPluckColumnKindResult, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValueOptional, SetQueryReturnsValueOrThrow, SetQueryReturnsVoid, SetQueryReturnsVoidKind, SetQueryTableAlias, ShapeColumnPrimaryKeys, ShapeUniqueColumns, SimpleJoinItem, SimpleJoinItemNonSubQueryArgs, SmallIntColumn, SmallSerialColumn, SortDir, SqlFn, SqlMethod, StringColumn$1 as StringColumn, TableData, TableDataFn, TableDataInput, TableDataItem, TableDataItemsUniqueColumnTuples, TableDataItemsUniqueColumns, TableDataItemsUniqueConstraints, TableDataMethods, TextBaseColumn, TextColumn, TextColumnData, Then, TimeColumn, TimestampColumn, TimestampTZColumn, ToSQLCtx, ToSQLOptions, ToSQLQuery, Transaction, TransactionAdapter, TransactionOptions, TransformMethods, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnionKind, UnionSet, UniqueConstraints, UniqueQueryTypeOrExpression, UniqueTableDataItem, UnknownColumn, Update, UpdateArg, UpdateCtx, UpdateCtxCollect, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdateSelf, UpdatedAtDataInjector, UpsertArg, UpsertResult, UpsertThis, VarCharColumn, VirtualColumn, Where, WhereArg, WhereArgs, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereNotArgs, WhereOnItem, WhereOnJoinItem, WhereQueryBuilder, WhereResult, WhereSearchItem, WhereSearchResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowItem, WithArgsOptions, WithDataBase, WithDataItem, WithDataItems, WithItem, WithMethods, WithOptions, WithQueryBuilder, WithRecursiveOptions, WithResult, WithSqlResult, WrapQueryArg, XMLColumn, _initQueryBuilder, _queryAfterSaveCommit, _queryAll, _queryAs, _queryChangeCounter, _queryCreate, _queryCreateFrom, _queryCreateMany, _queryCreateManyFrom, _queryCreateManyRaw, _queryCreateRaw, _queryDefaults, _queryDelete, _queryExec, _queryFindBy, _queryFindByOptional, _queryGet, _queryGetOptional, _queryHookAfterCreate, _queryHookAfterCreateCommit, _queryHookAfterDelete, _queryHookAfterDeleteCommit, _queryHookAfterQuery, _queryHookAfterSave, _queryHookAfterUpdate, _queryHookAfterUpdateCommit, _queryHookBeforeCreate, _queryHookBeforeDelete, _queryHookBeforeQuery, _queryHookBeforeSave, _queryHookBeforeUpdate, _queryInsert, _queryInsertFrom, _queryInsertMany, _queryInsertManyFrom, _queryInsertManyRaw, _queryInsertRaw, _queryJoinOn, _queryJoinOnJsonPathEquals, _queryJoinOrOn, _queryOr, _queryOrNot, _queryRows, _querySelect, _queryTake, _queryTakeOptional, _queryUnion, _queryUpdate, _queryUpdateOrThrow, _queryUpdateRaw, _queryWhere, _queryWhereExists, _queryWhereIn, _queryWhereNot, _queryWhereNotSql, _queryWhereSql, addComputedColumns, addParserForRawExpression, addParserForSelectItem, addQueryOn, anyShape, checkIfASimpleQuery, cloneQuery, cloneQueryBaseUnscoped, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnsShapeToCode, commitSql, constraintInnerToCode, constraintToCode, copyTableData, countSelect, createDb, defaultSchemaConfig, extendQuery, foreignKeyArgumentToCode, getClonedQueryData, getColumnInfo, getColumnTypes, getPrimaryKeys, getQueryAs, getShapeFromSelect, getSqlText, handleResult, identityToCode, indexInnerToCode, indexToCode, instantiateColumn, isDefaultTimeStamp, isQueryReturnsAll, isSelectingCount, joinSubQuery, logColors, logParamToLogObject, makeColumnTypes, makeColumnsByType, makeFnExpression, makeRegexToFindInSql, makeSQL, parseRecord, parseResult, parseTableData, parseTableDataInput, primaryKeyInnerToCode, processSelectArg, pushLimitSQL, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, pushTableDataCode, queryFrom, queryFromSql, queryJson, queryMethodByReturnType, queryTypeWithLimitOne, queryWrap, quote, quoteString, raw, referencesArgsToCode, resolveSubQueryCallback, rollbackSql, saveSearchAlias, setParserForSelectedString, setQueryObjectValue, setQueryOperators, simplifyColumnDefault, sqlFn, sqlQueryArgsToExpression, tableDataMethods, templateLiteralToSQL, testTransaction, throwIfNoWhere, toSQL, toSQLCacheKey };
7895
+ export { Adapter, AdapterConfig, AdapterOptions, AddQueryDefaults, AddQuerySelect, AfterHook, AggregateMethods, AggregateOptions, AliasOrTable, ArrayColumn, ArrayColumnValue, ArrayData, AsMethods, AsQueryArg, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanQueryColumn, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, CitextColumn, Clear, ClearStatement, CloneSelfKeys, ColumnData, ColumnFromDbParams, ColumnInfoQueryData, ColumnOperators, ColumnRefExpression, ColumnType, ColumnsByType, ColumnsShape, ColumnsShapeToNullableObject, ColumnsShapeToObject, ColumnsShapeToObjectArray, ColumnsShapeToPluck, CommonQueryData, ComputedColumnsBase, CopyOptions, CopyQueryData, Create, CreateBelongsToData, CreateColumn, CreateCtx, CreateData, CreateKind, CreateMethodsNames, CreateRelationsData, CreateRelationsDataOmittingFKeys, CreateSelf, CustomTypeColumn, DateBaseColumn, DateColumn, DateColumnInput, DateTimeBaseClass, DateTimeTzBaseClass, Db, DbDomainArg, DbDomainArgRecord, DbExtension, DbOptions, DbResult, DbSharedOptions, DbTableConstructor, DbTableOptionScopes, DbTableOptions, DecimalColumn, DecimalColumnData, DefaultColumnTypes, DefaultSchemaConfig, Delete, DeleteArgs, DeleteMethodsNames, DeleteQueryData, DeleteResult, DomainColumn, DoublePrecisionColumn, DynamicRawSQL, EnumColumn, ExpressionMethods, ExpressionOutput, FnExpression, FnExpressionArgs, FnExpressionArgsPairs, FnExpressionArgsValue, For, FromArg, FromMethods, FromQuerySelf, FromResult, GetArg, GetColumnInfo, GetQueryResult, GetResult, GetResultOptional, GetStringArg, GroupArgs, Having, HavingItem, HookAction, HookSelect, IdentityColumn, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, IsolationLevel, JSONColumn, JSONTextColumn, Join, JoinArgs, JoinCallback, JoinFirstArg, JoinItem, JoinItemArgs, JoinLateralCallback, JoinLateralItem, JoinLateralResult, JoinOverrides, JoinQueryBuilder, JoinQueryMethod, JoinResult, JoinedParsers, JoinedShapes, JsonMethods, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MapTableScopesOption, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NoPrimaryKeyOption, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumnData, OnConflictMerge, OnConflictQueryBuilder, OnConflictSet, OnConflictTarget, OnMethods, Operator, Operators, OperatorsAny, OperatorsArray, OperatorsBoolean, OperatorsDate, OperatorsJson, OperatorsNumber, OperatorsText, OperatorsTime, OrCreateArg, OrExpression, OrchidOrmError, OrchidOrmInternalError, OrderArg, OrderArgSelf, OrderArgs, OrderItem, OrderTsQueryConfig, Over, PathColumn, PickColumnData, PickQueryBaseQuery, PickQueryColumnTypes, PickQueryDataShapeAndJoinedShapes, PickQueryInternal, PickQueryMetaRelations, PickQueryMetaResultRelations, PickQueryMetaResultRelationsWindows, PickQueryMetaResultRelationsWindowsColumnTypes, PickQueryMetaResultRelationsWithDataReturnType, PickQueryMetaResultRelationsWithDataReturnTypeShape, PickQueryMetaResultReturnTypeWithDataWindows, PickQueryMetaResultReturnTypeWithDataWindowsTable, PickQueryMetaShapeRelationsWithData, PickQueryMetaTable, PickQueryMetaTableShape, PickQueryMetaTableShapeReturnTypeWithData, PickQueryMetaWithData, PickQueryMetaWithDataColumnTypes, PickQueryQ, PickQueryQAndBaseQuery, PickQueryQAndInternal, PickQueryRelations, PickQueryRelationsWithData, PickQueryResultColumnTypes, PickQueryShapeResultSinglePrimaryKey, PickQueryShapeSinglePrimaryKey, PickQuerySinglePrimaryKey, PickQueryWindows, PickQueryWithData, PickQueryWithDataColumnTypes, PointColumn, PolygonColumn, Query, QueryAfterHook, QueryArraysResult, QueryBase, QueryBaseThen, QueryBeforeHook, QueryData, QueryDataFromItem, QueryDataJoinTo, QueryDefaultReturnData, QueryError, QueryErrorName, QueryGet, QueryGetSelf, QueryHelperResult, QueryHookSelect, QueryHooks, QueryInternal, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMetaHasSelect, QueryMetaHasWhere, QueryMethods, QueryOrExpression, QueryOrExpressionBooleanOrNullResult, QueryResult, QueryReturnsAll, QueryScopeData, QueryScopes, QuerySourceItem, QueryUpsertOrCreate, QueryWithComputed, QueryWithTable, RawSQL, RealColumn, RecordOfColumnsShapeBase, RefExpression, RelationConfigBase, RelationConfigDataForCreate, RelationJoinQuery, RelationQuery, RelationQueryBase, RelationsBase, SearchArg, SearchMethods, SearchWeight, SearchWeightRecord, Select, SelectArg, SelectArgs, SelectAs, SelectItem, SelectQueryData, SelectSubQueryResult, SelectableFromShape, SelectableOfType, SelectableOrExpression, SelectableOrExpressionOfType, SelectableOrExpressions, SerialColumn, SerialColumnData, SetQueryKind, SetQueryKindResult, SetQueryReturnsAll, SetQueryReturnsAllKind, SetQueryReturnsAllKindResult, SetQueryReturnsColumnInfo, SetQueryReturnsColumnKind, SetQueryReturnsColumnKindResult, SetQueryReturnsColumnOptional, SetQueryReturnsColumnOrThrow, SetQueryReturnsOne, SetQueryReturnsOneKind, SetQueryReturnsOneKindResult, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsPluckColumn, SetQueryReturnsPluckColumnKind, SetQueryReturnsPluckColumnKindResult, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValueOptional, SetQueryReturnsValueOrThrow, SetQueryReturnsVoid, SetQueryReturnsVoidKind, SetQueryTableAlias, ShapeColumnPrimaryKeys, ShapeUniqueColumns, SimpleJoinItem, SimpleJoinItemNonSubQueryArgs, SmallIntColumn, SmallSerialColumn, SortDir, SqlFn, SqlMethod, StringColumn$1 as StringColumn, TableData, TableDataFn, TableDataInput, TableDataItem, TableDataItemsUniqueColumnTuples, TableDataItemsUniqueColumns, TableDataItemsUniqueConstraints, TableDataMethods, TextBaseColumn, TextColumn, TextColumnData, Then, TimeColumn, TimestampColumn, TimestampTZColumn, ToSQLCtx, ToSQLOptions, ToSQLQuery, Transaction, TransactionAdapter, TransactionOptions, TransformMethods, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArgs, UnionItem, UnionKind, UnionSet, UniqueConstraints, UniqueQueryTypeOrExpression, UniqueTableDataItem, UnknownColumn, Update, UpdateArg, UpdateCtx, UpdateCtxCollect, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdateSelf, UpdatedAtDataInjector, UpsertResult, UpsertThis, VarCharColumn, VirtualColumn, Where, WhereArg, WhereArgs, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereNotArgs, WhereOnItem, WhereOnJoinItem, WhereQueryBuilder, WhereResult, WhereSearchItem, WhereSearchResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowItem, WithArgsOptions, WithDataBase, WithDataItem, WithDataItems, WithItem, WithMethods, WithOptions, WithQueryBuilder, WithRecursiveOptions, WithResult, WithSqlResult, WrapQueryArg, XMLColumn, _initQueryBuilder, _queryAfterSaveCommit, _queryAll, _queryAs, _queryChangeCounter, _queryCreate, _queryCreateFrom, _queryCreateMany, _queryCreateManyFrom, _queryCreateManyRaw, _queryCreateRaw, _queryDefaults, _queryDelete, _queryExec, _queryFindBy, _queryFindByOptional, _queryGet, _queryGetOptional, _queryHookAfterCreate, _queryHookAfterCreateCommit, _queryHookAfterDelete, _queryHookAfterDeleteCommit, _queryHookAfterQuery, _queryHookAfterSave, _queryHookAfterUpdate, _queryHookAfterUpdateCommit, _queryHookBeforeCreate, _queryHookBeforeDelete, _queryHookBeforeQuery, _queryHookBeforeSave, _queryHookBeforeUpdate, _queryInsert, _queryInsertFrom, _queryInsertMany, _queryInsertManyFrom, _queryInsertManyRaw, _queryInsertRaw, _queryJoinOn, _queryJoinOnJsonPathEquals, _queryJoinOrOn, _queryOr, _queryOrNot, _queryRows, _querySelect, _queryTake, _queryTakeOptional, _queryUnion, _queryUpdate, _queryUpdateOrThrow, _queryUpdateRaw, _queryWhere, _queryWhereExists, _queryWhereIn, _queryWhereNot, _queryWhereNotSql, _queryWhereSql, addComputedColumns, addParserForRawExpression, addParserForSelectItem, addQueryOn, anyShape, checkIfASimpleQuery, cloneQuery, cloneQueryBaseUnscoped, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnsShapeToCode, commitSql, constraintInnerToCode, constraintToCode, copyTableData, countSelect, createDb, defaultSchemaConfig, extendQuery, foreignKeyArgumentToCode, getClonedQueryData, getColumnInfo, getColumnTypes, getPrimaryKeys, getQueryAs, getShapeFromSelect, getSqlText, handleResult, identityToCode, indexInnerToCode, indexToCode, instantiateColumn, isDefaultTimeStamp, isQueryReturnsAll, isSelectingCount, joinSubQuery, logColors, logParamToLogObject, makeColumnTypes, makeColumnsByType, makeFnExpression, makeRegexToFindInSql, makeSQL, parseRecord, parseResult, parseTableData, parseTableDataInput, primaryKeyInnerToCode, processSelectArg, pushLimitSQL, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, pushTableDataCode, queryFrom, queryFromSql, queryJson, queryMethodByReturnType, queryTypeWithLimitOne, queryWrap, quote, quoteString, raw, referencesArgsToCode, resolveSubQueryCallback, rollbackSql, saveSearchAlias, setParserForSelectedString, setQueryObjectValue, setQueryOperators, simplifyColumnDefault, sqlFn, sqlQueryArgsToExpression, tableDataMethods, templateLiteralToSQL, testTransaction, throwIfNoWhere, toSQL, toSQLCacheKey };