pqb 0.11.27 → 0.11.29

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 { Sql, QueryBaseCommon, ColumnsShapeBase, QueryInternal, QueryMetaBase, EmptyObject, RawExpression, ColumnTypeBase, MaybeArray, QueryResultRow, AdapterBase, QueryInput, StringKey, ColumnOutput, NullableColumn, EmptyTuple, ColumnTypesBase, DbBase, ThenResult, ColumnShapeOutput, DefaultSelectColumns, SetOptional, Spread, CoalesceString, QueryCommon, BaseNumberData, Code, ColumnWithDefault, numberTypeMethods, BaseStringData, PrimaryKeyColumn, DateColumnData, EncodeColumn, ParseColumn, dateTypeMethods, JSONTypeAny, record, ArrayMethodsData, arrayMethods, name, ColumnDataBase, BaseOperators, HiddenColumn, ValidationContext, MessageParam } from 'orchid-core';
2
+ import { Sql, QueryBaseCommon, ColumnsShapeBase, QueryInternal, QueryMetaBase, EmptyObject, RawExpression, ColumnTypeBase, MaybeArray, QueryResultRow, AdapterBase, QueryInput, ColumnsParsers, getValueKey, StringKey, ColumnOutput, QueryThen, QueryCatch, NullableColumn, EmptyTuple, ColumnTypesBase, ColumnShapeOutput, DefaultSelectColumns, DbBase, SetOptional, Spread, CoalesceString, QueryCommon, BaseNumberData, Code, ColumnWithDefault, numberTypeMethods, BaseStringData, PrimaryKeyColumn, DateColumnData, EncodeColumn, ParseColumn, dateTypeMethods, JSONTypeAny, record, ArrayMethodsData, arrayMethods, name, ColumnDataBase, BaseOperators, HiddenColumn, ValidationContext, MessageParam } from 'orchid-core';
3
3
  import { PoolConfig, Pool, PoolClient } from 'pg';
4
4
  import { inspect } from 'util';
5
5
  import { AsyncLocalStorage } from 'node:async_hooks';
@@ -467,26 +467,13 @@ type Resolve = (result: any) => any;
467
467
  type Reject = (error: any) => any;
468
468
  declare class Then {
469
469
  get then(): typeof maybeWrappedThen;
470
- catch<T extends Query, Result>(this: T, fn: (reason: any) => Result | PromiseLike<Result>): Promise<ReturnType<T['then']> | Result>;
470
+ catch(this: Query, fn: (reason: any) => unknown): Promise<any>;
471
471
  }
472
472
  declare const handleResult: CommonQueryData['handleResult'];
473
473
  declare function maybeWrappedThen(this: Query, resolve?: Resolve, reject?: Reject): Promise<any>;
474
474
  declare const parseResult: (q: Query, parsers: ColumnsParsers | undefined, returnType: QueryReturnType | undefined, result: QueryResult, isSubQuery?: boolean) => unknown;
475
475
  declare const parseRecord: (parsers: ColumnsParsers, row: any) => any;
476
476
 
477
- type GetArg<T extends QueryBase> = StringKey<keyof T['selectable']> | RawExpression;
478
- type UnwrapRaw<T extends Query, Arg extends GetArg<T>> = Arg extends RawExpression ? Arg['__column'] : Exclude<Arg, RawExpression>;
479
- type GetResult<T extends Query, Arg extends GetArg<T>> = SetQueryReturnsValue<T, UnwrapRaw<T, Arg>>;
480
- type GetOptionalResult<T extends Query, Arg extends GetArg<T>> = SetQueryReturnsValueOptional<T, UnwrapRaw<T, Arg>>;
481
- type getValueKey = typeof getValueKey;
482
- declare const getValueKey: unique symbol;
483
- declare class QueryGet {
484
- get<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetResult<T, Arg>;
485
- _get<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetResult<T, Arg>;
486
- getOptional<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetOptionalResult<T, Arg>;
487
- _getOptional<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetOptionalResult<T, Arg>;
488
- }
489
-
490
477
  type SelectArg<T extends QueryBase> = '*' | StringKey<keyof T['selectable']> | SelectAsArg<T>;
491
478
  type SelectAsArg<T extends QueryBase> = Record<string, SelectAsValue<T>>;
492
479
  type SelectAsValue<T extends QueryBase> = StringKey<keyof T['selectable']> | RawExpression | ((q: T) => Query) | ((q: T) => RawExpression) | ((q: T) => Query | RawExpression);
@@ -496,12 +483,12 @@ type SelectResult<T extends Query, Args extends SelectArg<T>[], SelectStringsRes
496
483
  T['selectable']
497
484
  ]>, AsKeys extends keyof SelectAsResult[0] = keyof SelectAsResult[0], ResultKeys extends keyof T['result'] = T['meta']['hasSelect'] extends true ? keyof T['result'] : never, ShapeKeys extends keyof T['shape'] = '*' extends Args[number] ? keyof T['shape'] : never, Result extends ColumnsShapeBase = {
498
485
  [K in StringsKeys | AsKeys | ResultKeys | ShapeKeys]: K extends StringsKeys ? SelectStringsResult[K] : K extends AsKeys ? SelectAsResult[0][K] : K extends ResultKeys ? T['result'][K] : K extends ShapeKeys ? T['shape'][K] : never;
499
- }> = (T['meta']['hasSelect'] extends true ? unknown : {
486
+ }, Data = GetQueryResult<T['returnType'], Result>> = (T['meta']['hasSelect'] extends true ? unknown : {
500
487
  meta: {
501
488
  hasSelect: true;
502
489
  };
503
490
  }) & {
504
- [K in keyof T]: K extends 'result' ? Result : K extends 'then' ? QueryThen<T['returnType'], Result> : K extends 'selectable' ? SelectAsResult[1] : T[K];
491
+ [K in keyof T]: K extends 'result' ? Result : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : K extends 'selectable' ? SelectAsResult[1] : T[K];
505
492
  };
506
493
  type SelectStringArgsResult<T extends Query, Args extends SelectArg<T>[]> = {
507
494
  [Arg in Args[number] as Arg extends keyof T['selectable'] ? T['selectable'][Arg]['as'] : never]: Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : never;
@@ -528,12 +515,83 @@ type SelectSubQueryResult<Arg extends Query & {
528
515
  }> = QueryReturnsAll<Arg['returnType']> extends true ? ArrayOfColumnsObjects<Arg['result']> : Arg['returnType'] extends 'valueOrThrow' ? Arg['result']['value'] : Arg['returnType'] extends 'pluck' ? PluckResultColumnType<Arg['result']['pluck']> : Arg[isRequiredRelationKey] extends true ? ColumnsObject<Arg['result']> : NullableColumn<ColumnsObject<Arg['result']>>;
529
516
  declare const addParserForRawExpression: (q: Query, key: string | getValueKey, raw: RawExpression) => void;
530
517
  declare const addParserForSelectItem: <T extends Query>(q: T, as: string | getValueKey | undefined, key: string, arg: RawExpression | Query | StringKey<keyof T["selectable"]>) => string | RawExpression | Query;
531
- declare const addParserToQuery: (query: QueryData, key: string | getValueKey, parser: ColumnParser) => void;
532
518
  declare const processSelectArg: <T extends Query>(q: T, as: string | undefined, arg: SelectArg<T>, columnAs?: string | getValueKey) => SelectItem;
533
519
  declare const getShapeFromSelect: (q: QueryBase, isSubQuery?: boolean) => ColumnsShapeBase;
534
520
  declare class Select {
521
+ /**
522
+ * Takes a list of columns to be selected, and by default, the query builder will select all columns of the table.
523
+ *
524
+ * Pass an object to select columns with aliases. Keys of the object are column aliases, value can be a column name, sub-query, or raw expression.
525
+ *
526
+ * ```ts
527
+ * // select columns of the table:
528
+ * db.table.select('id', 'name', { idAlias: 'id' });
529
+ *
530
+ * // accepts columns with table names:
531
+ * db.table.select('user.id', 'user.name', { nameAlias: 'user.name' });
532
+ *
533
+ * // table name may refer to the current table or a joined table:
534
+ * db.table
535
+ * .join(Message, 'authorId', 'id')
536
+ * .select('user.name', 'message.text', { textAlias: 'message.text' });
537
+ *
538
+ * // select value from the sub-query,
539
+ * // this sub-query should return a single record and a single column:
540
+ * db.table.select({
541
+ * subQueryResult: Otherdb.table.select('column').take(),
542
+ * });
543
+ *
544
+ * // select raw SQL value, the first argument of `raw` is a column type, it is used for return type of the query
545
+ * db.table.select({
546
+ * raw: db.table.sql((t) => t.integer())`1 + 2`,
547
+ * });
548
+ *
549
+ * // same raw SQL query as above, but raw value is returned from a callback
550
+ * db.table.select({
551
+ * raw: (q) => q.sql((t) => t.integer())`1 + 2`,
552
+ * });
553
+ * ```
554
+ *
555
+ * When you use the ORM and defined relations, `select` can also accept callbacks with related table queries:
556
+ *
557
+ * ```ts
558
+ * await db.author.select({
559
+ * allBooks: (q) => q.books,
560
+ * firstBook: (q) => q.books.order({ createdAt: 'ASC' }).take(),
561
+ * booksCount: (q) => q.books.count(),
562
+ * });
563
+ * ```
564
+ *
565
+ * When you're selecting a relation that's connected via `belongsTo` or `hasOne`, it becomes available to use in `order` or in `where`:
566
+ *
567
+ * ```ts
568
+ * // select books with their authors included, order by author name and filter by author column:
569
+ * await db.books
570
+ * .select({
571
+ * author: (q) => q.author,
572
+ * })
573
+ * .order('author.name')
574
+ * .where({ 'author.isPopular': true });
575
+ * ```
576
+ */
535
577
  select<T extends Query, K extends SelectArg<T>[]>(this: T, ...args: K): SelectResult<T, K>;
536
578
  _select<T extends Query, K extends SelectArg<T>[]>(this: T, ...args: K): SelectResult<T, K>;
579
+ /**
580
+ * When querying the table or creating records, all columns are selected by default,
581
+ * but updating and deleting queries are returning affected row counts by default.
582
+ *
583
+ * Use `selectAll` to select all columns. If the `.select` method was applied before it will be discarded.
584
+ *
585
+ * ```ts
586
+ * const selectFull = await db.table
587
+ * .select('id', 'name') // discarded by `selectAll`
588
+ * .selectAll();
589
+ *
590
+ * const updatedFull = await db.table.selectAll().where(conditions).update(data);
591
+ *
592
+ * const deletedFull = await db.table.selectAll().where(conditions).delete();
593
+ * ```
594
+ */
537
595
  selectAll<T extends Query>(this: T): SelectResult<T, ['*']>;
538
596
  _selectAll<T extends Query>(this: T): SelectResult<T, ['*']>;
539
597
  }
@@ -555,10 +613,10 @@ type FromQueryResult<T extends Query, Q extends Query, Selectable extends Select
555
613
  as: K;
556
614
  column: Q['result'][K];
557
615
  } : never;
558
- }> = {
616
+ }, Data = GetQueryResult<T['returnType'], Q['result']>> = {
559
617
  [K in keyof T]: K extends 'meta' ? Omit<T['meta'], 'hasSelect' | 'as'> & {
560
618
  as: AliasOrTable<Q>;
561
- } : K extends 'selectable' ? Selectable : K extends 'result' | 'shape' ? Q['result'] : K extends 'then' ? QueryThen<T['returnType'], Q['result']> : T[K];
619
+ } : K extends 'selectable' ? Selectable : K extends 'result' | 'shape' ? Q['result'] : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
562
620
  };
563
621
  declare class From {
564
622
  from<T extends Query, Args extends FromArgs<T>>(this: T, ...args: Args): FromResult<T, Args>;
@@ -714,13 +772,13 @@ type JoinAddSelectable<T extends Query, Selectable extends SelectableBase> = {
714
772
  };
715
773
  type JoinOptionalMain<T extends Query, Selectable extends SelectableBase, Result extends ColumnsShapeBase = {
716
774
  [K in keyof T['result']]: NullableColumn<T['result'][K]>;
717
- }> = {
775
+ }, Data = GetQueryResult<T['returnType'], Result>> = {
718
776
  [K in keyof T]: K extends 'selectable' ? {
719
777
  [K in keyof T['selectable']]: {
720
778
  as: T['selectable'][K]['as'];
721
779
  column: NullableColumn<T['selectable'][K]['column']>;
722
780
  };
723
- } & Selectable : K extends 'result' ? Result : K extends 'then' ? QueryThen<T['returnType'], Result> : T[K];
781
+ } & Selectable : K extends 'result' ? Result : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
724
782
  };
725
783
  type JoinWithArgToQuery<With extends WithDataItem, Selectable extends SelectableBase = {
726
784
  [K in keyof With['shape']]: {
@@ -863,7 +921,7 @@ type DbTableOptions = {
863
921
  snakeCase?: boolean;
864
922
  } & QueryLogOptions;
865
923
  declare const anyShape: Record<string, ColumnType<unknown, orchid_core.BaseOperators, unknown>>;
866
- interface Db<Table extends string | undefined = undefined, Shape extends ColumnsShape = Record<string, never>, Relations extends Query['relations'] = Query['relations'], CT extends ColumnTypesBase = DefaultColumnTypes> extends DbBase<Adapter, Table, Shape, CT>, QueryMethods {
924
+ interface Db<Table extends string | undefined = undefined, Shape extends ColumnsShape = Record<string, never>, Relations extends Query['relations'] = Query['relations'], CT extends ColumnTypesBase = DefaultColumnTypes, Data = Pick<ColumnShapeOutput<Shape>, DefaultSelectColumns<Shape>[number]>[]> extends DbBase<Adapter, Table, Shape, CT>, QueryMethods {
867
925
  new (adapter: Adapter, queryBuilder: Db<Table, Shape, Relations, CT>, table?: Table, shape?: Shape, options?: DbTableOptions): this;
868
926
  queryBuilder: Db;
869
927
  whereQueryBuilder: Query['whereQueryBuilder'];
@@ -872,7 +930,8 @@ interface Db<Table extends string | undefined = undefined, Shape extends Columns
872
930
  query: QueryData;
873
931
  selectable: SelectableFromShape<Shape, Table>;
874
932
  returnType: Query['returnType'];
875
- then: ThenResult<Pick<ColumnShapeOutput<Shape>, DefaultSelectColumns<Shape>[number]>[]>;
933
+ then: QueryThen<Data>;
934
+ catch: QueryCatch<Data>;
876
935
  windows: Query['windows'];
877
936
  defaultSelectColumns: DefaultSelectColumns<Shape>;
878
937
  relations: Relations;
@@ -1366,11 +1425,23 @@ declare class QueryUpsertOrCreate {
1366
1425
  _orCreate<T extends UpsertThis>(this: T, data: UpsertCreateArg<T>): UpsertResult<T>;
1367
1426
  }
1368
1427
 
1369
- type MergeQuery<T extends Query, Q extends Query, ReturnType extends QueryReturnType = QueryReturnType extends Q['returnType'] ? T['returnType'] : Q['returnType']> = Omit<T, 'result' | 'returnType' | 'then' | 'selectable' | 'windows' | 'withData'> & {
1428
+ type GetArg<T extends QueryBase> = StringKey<keyof T['selectable']> | RawExpression;
1429
+ type UnwrapRaw<T extends Query, Arg extends GetArg<T>> = Arg extends RawExpression ? Arg['__column'] : Exclude<Arg, RawExpression>;
1430
+ type GetResult<T extends Query, Arg extends GetArg<T>> = SetQueryReturnsValue<T, UnwrapRaw<T, Arg>>;
1431
+ type GetOptionalResult<T extends Query, Arg extends GetArg<T>> = SetQueryReturnsValueOptional<T, UnwrapRaw<T, Arg>>;
1432
+ declare class QueryGet {
1433
+ get<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetResult<T, Arg>;
1434
+ _get<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetResult<T, Arg>;
1435
+ getOptional<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetOptionalResult<T, Arg>;
1436
+ _getOptional<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetOptionalResult<T, Arg>;
1437
+ }
1438
+
1439
+ type MergeQuery<T extends Query, Q extends Query, ReturnType extends QueryReturnType = QueryReturnType extends Q['returnType'] ? T['returnType'] : Q['returnType'], Data = T['meta']['hasSelect'] extends true ? GetQueryResult<ReturnType, Spread<[T['result'], Q['result']]>> : GetQueryResult<ReturnType, Q['result']>> = Omit<T, 'result' | 'returnType' | 'then' | 'catch' | 'selectable' | 'windows' | 'withData'> & {
1370
1440
  meta: Q['meta'];
1371
1441
  result: T['meta']['hasSelect'] extends true ? Spread<[T['result'], Q['result']]> : Q['result'];
1372
1442
  returnType: ReturnType;
1373
- then: T['meta']['hasSelect'] extends true ? QueryThen<ReturnType, Spread<[T['result'], Q['result']]>> : QueryThen<ReturnType, Q['result']>;
1443
+ then: QueryThen<Data>;
1444
+ catch: QueryCatch<Data>;
1374
1445
  selectable: T['selectable'] & Q['selectable'];
1375
1446
  windows: T['windows'] & Q['windows'];
1376
1447
  withData: T['withData'] & Q['withData'];
@@ -1627,8 +1698,6 @@ declare class Aggregate {
1627
1698
  _selectStringAgg<T extends Query, As extends string | undefined = undefined>(this: T, arg: StringExpression<T>, delimiter: string, options?: AggregateOptions<T, As>): SelectAgg<T, 'string_agg', As, NullableColumn<StringColumn>>;
1628
1699
  }
1629
1700
 
1630
- type ColumnParser = (input: unknown) => unknown;
1631
- type ColumnsParsers = Record<string | getValueKey, ColumnParser>;
1632
1701
  type SelectableBase = Record<PropertyKey, {
1633
1702
  as: string;
1634
1703
  column: ColumnTypeBase;
@@ -1664,7 +1733,8 @@ type Query = QueryCommon & QueryMethods & {
1664
1733
  result: ColumnsShapeBase;
1665
1734
  selectable: SelectableBase;
1666
1735
  returnType: QueryReturnType;
1667
- then: ThenResult<unknown>;
1736
+ then: QueryThen<unknown>;
1737
+ catch: QueryCatch<unknown>;
1668
1738
  windows: EmptyObject;
1669
1739
  defaultSelectColumns: string[];
1670
1740
  relations: RelationsBase;
@@ -1681,32 +1751,32 @@ type QueryReturnType = 'all' | 'one' | 'oneOrThrow' | 'rows' | 'pluck' | 'value'
1681
1751
  declare const queryTypeWithLimitOne: Record<QueryReturnType, true | undefined>;
1682
1752
  declare const isQueryReturnsAll: (q: Query) => boolean;
1683
1753
  type QueryReturnsAll<T extends QueryReturnType> = (QueryReturnType extends T ? 'all' : T) extends 'all' ? true : false;
1684
- type QueryThen<ReturnType extends QueryReturnType, Result extends ColumnsShapeBase> = QueryReturnsAll<ReturnType> extends true ? ThenResult<ColumnShapeOutput<Result>[]> : ReturnType extends 'one' ? ThenResult<ColumnShapeOutput<Result> | undefined> : ReturnType extends 'oneOrThrow' ? ThenResult<ColumnShapeOutput<Result>> : ReturnType extends 'value' ? Result extends {
1754
+ type GetQueryResult<ReturnType extends QueryReturnType, Result extends ColumnsShapeBase> = QueryReturnsAll<ReturnType> extends true ? ColumnShapeOutput<Result>[] : ReturnType extends 'one' ? ColumnShapeOutput<Result> | undefined : ReturnType extends 'oneOrThrow' ? ColumnShapeOutput<Result> : ReturnType extends 'value' ? Result extends {
1685
1755
  value: ColumnType;
1686
- } ? ThenResult<Result['value']['type'] | undefined> : never : ReturnType extends 'valueOrThrow' ? Result extends {
1756
+ } ? Result['value']['type'] | undefined : never : ReturnType extends 'valueOrThrow' ? Result extends {
1687
1757
  value: ColumnType;
1688
- } ? ThenResult<Result['value']['type']> : never : ReturnType extends 'rows' ? ThenResult<ColumnShapeOutput<Result>[keyof Result][][]> : ReturnType extends 'pluck' ? Result extends {
1758
+ } ? Result['value']['type'] : never : ReturnType extends 'rows' ? ColumnShapeOutput<Result>[keyof Result][][] : ReturnType extends 'pluck' ? Result extends {
1689
1759
  pluck: ColumnType;
1690
- } ? ThenResult<Result['pluck']['type'][]> : never : ReturnType extends 'rowCount' ? ThenResult<number> : ReturnType extends 'void' ? ThenResult<void> : never;
1691
- type AddQuerySelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase> = T['meta']['hasSelect'] extends true ? MergeSelect<T, Result> : {
1692
- [K in keyof T]: K extends 'meta' ? T['meta'] & {
1693
- hasSelect: true;
1694
- } : K extends 'result' ? Result : K extends 'then' ? QueryThen<T['returnType'], Result> : T[K];
1695
- };
1696
- type MergeSelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase, Merged extends ColumnsShapeBase = {
1760
+ } ? Result['pluck']['type'][] : never : ReturnType extends 'rowCount' ? number : ReturnType extends 'void' ? void : never;
1761
+ type AddQuerySelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase, Data = GetQueryResult<T['returnType'], Result>> = T['meta']['hasSelect'] extends true ? MergeSelect<T, Result, Data> : SetSelect<T, Result, Data>;
1762
+ type MergeSelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase, Data, Merged extends ColumnsShapeBase = {
1697
1763
  [K in keyof T['result']]: K extends keyof Result ? unknown : T['result'][K];
1698
1764
  } & Result> = {
1699
- [K in keyof T]: K extends 'result' ? Merged : K extends 'then' ? QueryThen<T['returnType'], Merged> : T[K];
1765
+ [K in keyof T]: K extends 'result' ? Merged : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
1766
+ };
1767
+ type SetSelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase, Data> = {
1768
+ [K in keyof T]: K extends 'meta' ? T['meta'] & {
1769
+ hasSelect: true;
1770
+ } : K extends 'result' ? Result : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
1700
1771
  };
1701
- type SetQueryReturns<T extends Query, R extends QueryReturnType> = Omit<T, 'returnType' | 'then'> & {
1702
- returnType: R;
1703
- then: QueryThen<R, T['result']>;
1772
+ type SetQueryReturns<T extends Query, R extends QueryReturnType, Data = GetQueryResult<R, T['result']>> = {
1773
+ [K in keyof T]: K extends 'returnType' ? R : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
1704
1774
  };
1705
1775
  type SetQueryReturnsAll<T extends Query> = SetQueryReturns<T, 'all'>;
1706
1776
  type SetQueryReturnsOneOptional<T extends Query> = SetQueryReturns<T, 'one'>;
1707
1777
  type SetQueryReturnsOne<T extends Query> = SetQueryReturns<T, 'oneOrThrow'>;
1708
1778
  type SetQueryReturnsRows<T extends Query> = SetQueryReturns<T, 'rows'>;
1709
- type SetQueryReturnsPluck<T extends Query, S extends keyof T['selectable'] | RawExpression, C extends ColumnTypeBase = S extends keyof T['selectable'] ? T['selectable'][S]['column'] : S extends RawExpression ? S['__column'] : never> = Omit<T, 'result' | 'returnType' | 'then'> & {
1779
+ type SetQueryReturnsPluck<T extends Query, S extends keyof T['selectable'] | RawExpression, C extends ColumnTypeBase = S extends keyof T['selectable'] ? T['selectable'][S]['column'] : S extends RawExpression ? S['__column'] : never> = Omit<T, 'result' | 'returnType' | 'then' | 'catch'> & {
1710
1780
  meta: {
1711
1781
  hasSelect: true;
1712
1782
  };
@@ -1714,9 +1784,10 @@ type SetQueryReturnsPluck<T extends Query, S extends keyof T['selectable'] | Raw
1714
1784
  pluck: C;
1715
1785
  };
1716
1786
  returnType: 'pluck';
1717
- then: ThenResult<C['type'][]>;
1787
+ then: QueryThen<C['type'][]>;
1788
+ catch: QueryCatch<C['type'][]>;
1718
1789
  };
1719
- type SetQueryReturnsValueOptional<T extends Query, Arg extends Exclude<GetArg<T>, RawExpression> | ColumnTypeBase, Column extends ColumnTypeBase = Arg extends ColumnTypeBase ? Arg : Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['result']['value'] : never> = Omit<T, 'result' | 'returnType' | 'then'> & {
1790
+ type SetQueryReturnsValueOptional<T extends Query, Arg extends Exclude<GetArg<T>, RawExpression> | ColumnTypeBase, Column extends ColumnTypeBase = Arg extends ColumnTypeBase ? Arg : Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['result']['value'] : never> = Omit<T, 'result' | 'returnType' | 'then' | 'catch'> & {
1720
1791
  meta: {
1721
1792
  hasSelect: true;
1722
1793
  };
@@ -1724,9 +1795,10 @@ type SetQueryReturnsValueOptional<T extends Query, Arg extends Exclude<GetArg<T>
1724
1795
  value: Column;
1725
1796
  };
1726
1797
  returnType: 'value';
1727
- then: ThenResult<Column['type'] | undefined>;
1798
+ then: QueryThen<Column['type'] | undefined>;
1799
+ catch: QueryThen<Column['type'] | undefined>;
1728
1800
  };
1729
- type SetQueryReturnsValue<T extends Query, Arg extends Exclude<GetArg<T>, RawExpression> | ColumnTypeBase, Column extends ColumnTypeBase = Arg extends ColumnTypeBase ? Arg : Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['result']['value'] : never> = Omit<T, 'result' | 'returnType' | 'then'> & {
1801
+ type SetQueryReturnsValue<T extends Query, Arg extends Exclude<GetArg<T>, RawExpression> | ColumnTypeBase, Column extends ColumnTypeBase = Arg extends ColumnTypeBase ? Arg : Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['result']['value'] : never> = Omit<T, 'result' | 'returnType' | 'then' | 'catch'> & {
1730
1802
  meta: {
1731
1803
  hasSelect: true;
1732
1804
  };
@@ -1734,16 +1806,18 @@ type SetQueryReturnsValue<T extends Query, Arg extends Exclude<GetArg<T>, RawExp
1734
1806
  value: Column;
1735
1807
  };
1736
1808
  returnType: 'valueOrThrow';
1737
- then: ThenResult<Column['type']>;
1809
+ then: QueryThen<Column['type']>;
1810
+ catch: QueryCatch<Column['type']>;
1738
1811
  };
1739
1812
  type SetQueryReturnsRowCount<T extends Query> = SetQueryReturns<T, 'rowCount'>;
1740
1813
  type SetQueryReturnsVoid<T extends Query> = SetQueryReturns<T, 'void'>;
1741
- type SetQueryReturnsColumnInfo<T extends Query, Column extends keyof T['shape'] | undefined, Result = Column extends keyof T['shape'] ? ColumnInfo : Record<keyof T['shape'], ColumnInfo>> = Omit<T, 'result' | 'returnType' | 'then'> & {
1814
+ type SetQueryReturnsColumnInfo<T extends Query, Column extends keyof T['shape'] | undefined, Result = Column extends keyof T['shape'] ? ColumnInfo : Record<keyof T['shape'], ColumnInfo>> = Omit<T, 'result' | 'returnType' | 'then' | 'catch'> & {
1742
1815
  result: {
1743
1816
  value: ColumnType<Result>;
1744
1817
  };
1745
1818
  returnType: 'value';
1746
- then: ThenResult<Result>;
1819
+ then: QueryThen<Result>;
1820
+ catch: QueryCatch<Result>;
1747
1821
  };
1748
1822
  type SetQueryTableAlias<T extends Pick<Query, 'selectable' | 'table' | 'meta'> & {
1749
1823
  shape: ColumnsShapeBase;
@@ -3770,4 +3844,4 @@ declare const testTransaction: {
3770
3844
  close(arg: Arg): Promise<void>;
3771
3845
  };
3772
3846
 
3773
- export { Adapter, AdapterConfig, AdapterOptions, AddQuerySelect, AddQueryWith, AfterHook, AfterHookKey, Aggregate, Aggregate1ArgumentTypes, AggregateArg, AggregateItem, AggregateItemArg, AggregateItemOptions, AggregateOptions, AliasOrTable, ArrayColumn, ArrayData, ArrayOfColumnsObjects, BaseRelation, BeforeHook, BeforeHookKey, BelongsToRelation, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanExpression, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, CitextColumn, Clear, ClearStatement, ColumnData, ColumnFromDbParams, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnNameOfTable, ColumnOperators, ColumnParser, ColumnType, ColumnTypes, ColumnsObject, ColumnsParsers, ColumnsShape, CommonQueryData, CopyOptions, CopyQueryData, Create, CreateCtx, CreateData, CreateMethodsNames, CustomTypeColumn, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeTzBaseClass, Db, DbOptions, DbResult, DbTableOptions, DecimalBaseColumn, DecimalColumn, DefaultColumnTypes, Delete, DeleteMethodsNames, DeleteQueryData, DomainColumn, DoublePrecisionColumn, DropMode, EnumColumn, Expression, ExpressionOfType, ExpressionOutput, For, ForeignKey, ForeignKeyAction, ForeignKeyMatch, ForeignKeyOptions, ForeignKeyTable, From, FromArgs, FromResult, GetArg, HasAndBelongsToManyRelation, HasManyRelation, HasOneRelation, Having, HavingArg, HavingArgs, HavingItem, IdentityColumn, IndexColumnOptions, IndexOptions, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, IsolationLevel, JSONColumn, JSONTextColumn, JSONTypes, Join, JoinArgs, JoinCallback, JoinFirstArg, JoinItem, JoinLateralCallback, JoinLateralItem, JoinLateralResult, JoinResult, JoinedParsers, JoinedShapes, Json, JsonItem, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NoPrimaryKeyOption, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operators, OrchidOrmError, OrchidOrmInternalError, OrderArg, OrderArgs, OrderItem, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, Query, QueryArraysResult, QueryBase, QueryData, QueryError, QueryErrorName, QueryGet, QueryHooks, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryReturnType, QueryReturnsAll, QueryThen, QueryUpsertOrCreate, QueryWithTable, RawSqlMethods, RealColumn, Relation, RelationQuery, RelationQueryBase, RelationQueryData, RelationsBase, Select, SelectAgg, SelectArg, SelectFunctionItem, SelectItem, SelectQueryData, Selectable, SelectableBase, SelectableFromShape, SerialColumn, SerialColumnData, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumnInfo, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWith, SimpleJoinItem, SingleColumnIndexOptions, SmallIntColumn, SmallSerialColumn, SortDir, StringColumn, StringExpression, TableData, TextBaseColumn, TextColumn, TextColumnData, Then, TimeColumn, TimeInterval, TimestampColumn, TimestampTZColumn, ToSqlCtx, ToSqlOptions, Transaction, TransactionAdapter, TransactionOptions, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnionKind, UnknownColumn, Update, UpdateCtx, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdatedAtDataInjector, UpsertCreateArg, UpsertData, UpsertResult, UpsertThis, VarCharColumn, VirtualColumn, Where, WhereArg, WhereArgs, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereOnItem, WhereOnJoinItem, WhereQueryBuilder, WhereResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowFunctionOptions, WindowItem, With, WithDataBase, WithDataItem, WithItem, WithOptions, XMLColumn, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addParserToQuery, addQueryHook, addQueryOn, addQueryOrOn, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, anyShape, checkIfASimpleQuery, cloneQueryArrays, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnTypes, utils as columnUtils, columnsByType, columnsShapeToCode, constraintPropsToCode, constraintToCode, createDb, foreignKeyArgumentToCode, getClonedQueryData, getColumnTypes, getConstraintKind, getQueryAs, getRaw, getShapeFromSelect, getTableData, getValueKey, handleResult, identityToCode, indexToCode, instantiateColumn, isQueryReturnsAll, isRequiredRelationKey, jsonTypes, logColors, logParamToLogObject, makeRegexToFindInSql, makeSql, newTableData, parseRecord, parseResult, primaryKeyToCode, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryMethodByReturnType, queryTypeWithLimitOne, quote, quoteString, referencesArgsToCode, relationQueryKey, resetTableData, setQueryObjectValue, simplifyColumnDefault, testTransaction, toSql, toSqlCacheKey };
3847
+ export { Adapter, AdapterConfig, AdapterOptions, AddQuerySelect, AddQueryWith, AfterHook, AfterHookKey, Aggregate, Aggregate1ArgumentTypes, AggregateArg, AggregateItem, AggregateItemArg, AggregateItemOptions, AggregateOptions, AliasOrTable, ArrayColumn, ArrayData, ArrayOfColumnsObjects, BaseRelation, BeforeHook, BeforeHookKey, BelongsToRelation, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanExpression, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, CitextColumn, Clear, ClearStatement, ColumnData, ColumnFromDbParams, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnNameOfTable, ColumnOperators, ColumnType, ColumnTypes, ColumnsObject, ColumnsShape, CommonQueryData, CopyOptions, CopyQueryData, Create, CreateCtx, CreateData, CreateMethodsNames, CustomTypeColumn, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeTzBaseClass, Db, DbOptions, DbResult, DbTableOptions, DecimalBaseColumn, DecimalColumn, DefaultColumnTypes, Delete, DeleteMethodsNames, DeleteQueryData, DomainColumn, DoublePrecisionColumn, DropMode, EnumColumn, Expression, ExpressionOfType, ExpressionOutput, For, ForeignKey, ForeignKeyAction, ForeignKeyMatch, ForeignKeyOptions, ForeignKeyTable, From, FromArgs, FromResult, GetArg, GetQueryResult, HasAndBelongsToManyRelation, HasManyRelation, HasOneRelation, Having, HavingArg, HavingArgs, HavingItem, IdentityColumn, IndexColumnOptions, IndexOptions, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, IsolationLevel, JSONColumn, JSONTextColumn, JSONTypes, Join, JoinArgs, JoinCallback, JoinFirstArg, JoinItem, JoinLateralCallback, JoinLateralItem, JoinLateralResult, JoinResult, JoinedParsers, JoinedShapes, Json, JsonItem, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NoPrimaryKeyOption, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operators, OrchidOrmError, OrchidOrmInternalError, OrderArg, OrderArgs, OrderItem, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, Query, QueryArraysResult, QueryBase, QueryData, QueryError, QueryErrorName, QueryGet, QueryHooks, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryReturnType, QueryReturnsAll, QueryUpsertOrCreate, QueryWithTable, RawSqlMethods, RealColumn, Relation, RelationQuery, RelationQueryBase, RelationQueryData, RelationsBase, Select, SelectAgg, SelectArg, SelectFunctionItem, SelectItem, SelectQueryData, Selectable, SelectableBase, SelectableFromShape, SerialColumn, SerialColumnData, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumnInfo, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWith, SimpleJoinItem, SingleColumnIndexOptions, SmallIntColumn, SmallSerialColumn, SortDir, StringColumn, StringExpression, TableData, TextBaseColumn, TextColumn, TextColumnData, Then, TimeColumn, TimeInterval, TimestampColumn, TimestampTZColumn, ToSqlCtx, ToSqlOptions, Transaction, TransactionAdapter, TransactionOptions, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnionKind, UnknownColumn, Update, UpdateCtx, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdatedAtDataInjector, UpsertCreateArg, UpsertData, UpsertResult, UpsertThis, VarCharColumn, VirtualColumn, Where, WhereArg, WhereArgs, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereOnItem, WhereOnJoinItem, WhereQueryBuilder, WhereResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowFunctionOptions, WindowItem, With, WithDataBase, WithDataItem, WithItem, WithOptions, XMLColumn, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addQueryHook, addQueryOn, addQueryOrOn, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, anyShape, checkIfASimpleQuery, cloneQueryArrays, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnTypes, utils as columnUtils, columnsByType, columnsShapeToCode, constraintPropsToCode, constraintToCode, createDb, foreignKeyArgumentToCode, getClonedQueryData, getColumnTypes, getConstraintKind, getQueryAs, getRaw, getShapeFromSelect, getTableData, handleResult, identityToCode, indexToCode, instantiateColumn, isQueryReturnsAll, isRequiredRelationKey, jsonTypes, logColors, logParamToLogObject, makeRegexToFindInSql, makeSql, newTableData, parseRecord, parseResult, primaryKeyToCode, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryMethodByReturnType, queryTypeWithLimitOne, quote, quoteString, referencesArgsToCode, relationQueryKey, resetTableData, setQueryObjectValue, simplifyColumnDefault, testTransaction, toSql, toSqlCacheKey };