pqb 0.11.26 → 0.11.28

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, 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';
@@ -25,7 +25,7 @@ declare const makeSql: (table: Query, options?: ToSqlOptionsInternal) => Sql;
25
25
 
26
26
  declare abstract class QueryBase implements QueryBaseCommon {
27
27
  clone<T extends QueryBase>(this: T): T;
28
- abstract result: ColumnsShape;
28
+ abstract result: ColumnsShapeBase;
29
29
  query: QueryData;
30
30
  table?: string;
31
31
  selectable: SelectableBase;
@@ -457,17 +457,17 @@ type Expression<T extends Query = Query, C extends ColumnTypeBase = ColumnTypeBa
457
457
  type ExpressionOfType<T extends Query, C extends ColumnTypeBase, Type> = {
458
458
  [K in keyof T['selectable']]: ColumnOutput<T['selectable'][K]['column']> extends Type | null ? K : never;
459
459
  }[Selectable<T>] | RawExpression<C>;
460
- type NumberExpression<T extends Query, C extends ColumnType = ColumnType> = ExpressionOfType<T, C, number>;
461
- type StringExpression<T extends Query, C extends ColumnType = ColumnType> = ExpressionOfType<T, C, string>;
462
- type BooleanExpression<T extends Query, C extends ColumnType = ColumnType> = ExpressionOfType<T, C, boolean>;
463
- type ExpressionOutput<T extends Query, Expr extends Expression<T>> = Expr extends keyof T['selectable'] ? T['selectable'][Expr]['column'] : Expr extends RawExpression<infer ColumnType> ? ColumnType : never;
460
+ type NumberExpression<T extends Query, C extends ColumnTypeBase = ColumnTypeBase> = ExpressionOfType<T, C, number>;
461
+ type StringExpression<T extends Query, C extends ColumnTypeBase = ColumnTypeBase> = ExpressionOfType<T, C, string>;
462
+ type BooleanExpression<T extends Query, C extends ColumnTypeBase = ColumnTypeBase> = ExpressionOfType<T, C, boolean>;
463
+ type ExpressionOutput<T extends Query, Expr extends Expression<T>> = Expr extends keyof T['selectable'] ? T['selectable'][Expr]['column'] : Expr extends RawExpression<infer ColumnTypeBase> ? ColumnTypeBase : never;
464
464
 
465
465
  declare const queryMethodByReturnType: Record<QueryReturnType, 'query' | 'arrays'>;
466
466
  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>;
@@ -496,12 +496,12 @@ type SelectResult<T extends Query, Args extends SelectArg<T>[], SelectStringsRes
496
496
  T['selectable']
497
497
  ]>, 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
498
  [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 : {
499
+ }, Data = GetQueryResult<T['returnType'], Result>> = (T['meta']['hasSelect'] extends true ? unknown : {
500
500
  meta: {
501
501
  hasSelect: true;
502
502
  };
503
503
  }) & {
504
- [K in keyof T]: K extends 'result' ? Result : K extends 'then' ? QueryThen<T['returnType'], Result> : K extends 'selectable' ? SelectAsResult[1] : T[K];
504
+ [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
505
  };
506
506
  type SelectStringArgsResult<T extends Query, Args extends SelectArg<T>[]> = {
507
507
  [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;
@@ -543,22 +543,22 @@ type FromArgs<T extends Query> = [
543
543
  second?: {
544
544
  only?: boolean;
545
545
  }
546
- ];
547
- type FromResult<T extends Query, Args extends FromArgs<T>, Arg = Args[0]> = Arg extends string ? T['withData'] extends Record<string, WithDataItem> ? Arg extends keyof T['withData'] ? Omit<T, 'meta' | 'selectable'> & {
546
+ ] | [TemplateStringsArray, ...unknown[]];
547
+ type FromResult<T extends Query, Args extends FromArgs<T>> = Args extends TemplateStringsArray ? T : Args[0] extends string ? T['withData'] extends Record<string, WithDataItem> ? Args[0] extends keyof T['withData'] ? Omit<T, 'meta' | 'selectable'> & {
548
548
  meta: Omit<T['meta'], 'as'> & {
549
549
  as?: string;
550
550
  };
551
- selectable: SelectableFromShape<T['withData'][Arg]['shape'], Arg>;
552
- } : SetQueryTableAlias<T, Arg> : SetQueryTableAlias<T, Arg> : Arg extends Query ? FromQueryResult<T, Arg> : T;
551
+ selectable: SelectableFromShape<T['withData'][Args[0]]['shape'], Args[0]>;
552
+ } : SetQueryTableAlias<T, Args[0]> : SetQueryTableAlias<T, Args[0]> : Args[0] extends Query ? FromQueryResult<T, Args[0]> : T;
553
553
  type FromQueryResult<T extends Query, Q extends Query, Selectable extends SelectableBase = {
554
554
  [K in keyof Q['result']]: K extends string ? {
555
555
  as: K;
556
556
  column: Q['result'][K];
557
557
  } : never;
558
- }> = {
558
+ }, Data = GetQueryResult<T['returnType'], Q['result']>> = {
559
559
  [K in keyof T]: K extends 'meta' ? Omit<T['meta'], 'hasSelect' | 'as'> & {
560
560
  as: AliasOrTable<Q>;
561
- } : K extends 'selectable' ? Selectable : K extends 'result' | 'shape' ? Q['result'] : K extends 'then' ? QueryThen<T['returnType'], Q['result']> : T[K];
561
+ } : K extends 'selectable' ? Selectable : K extends 'result' | 'shape' ? Q['result'] : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
562
562
  };
563
563
  declare class From {
564
564
  from<T extends Query, Args extends FromArgs<T>>(this: T, ...args: Args): FromResult<T, Args>;
@@ -575,6 +575,7 @@ type WhereArg<T extends QueryBase> = (Omit<{
575
575
  values: unknown[][] | Query | RawExpression;
576
576
  }>;
577
577
  }) | QueryBase | RawExpression | ((q: WhereQueryBuilder<T>) => WhereQueryBuilder);
578
+ type WhereArgs<T extends QueryBase> = WhereArg<T>[] | [TemplateStringsArray, ...unknown[]];
578
579
  type WhereInColumn<T extends QueryBase> = keyof T['selectable'] | [keyof T['selectable'], ...(keyof T['selectable'])[]];
579
580
  type WhereInValues<T extends QueryBase, Column extends WhereInColumn<T>> = Column extends keyof T['selectable'] ? T['selectable'][Column]['column']['type'][] | Query | RawExpression : ({
580
581
  [I in keyof Column]: Column[I] extends keyof T['selectable'] ? T['selectable'][Column[I]]['column']['type'] : never;
@@ -591,20 +592,20 @@ type WhereResult<T extends QueryBase> = T & {
591
592
  type WhereInArg<T extends Pick<Query, 'selectable'>> = {
592
593
  [K in keyof T['selectable']]?: T['selectable'][K]['column']['type'][] | Query | RawExpression;
593
594
  };
594
- declare const addWhere: <T extends Where>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
595
- declare const addWhereNot: <T extends QueryBase>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
595
+ declare const addWhere: <T extends Where>(q: T, args: WhereArgs<T>) => WhereResult<T>;
596
+ declare const addWhereNot: <T extends QueryBase>(q: T, args: WhereArgs<T>) => WhereResult<T>;
596
597
  declare const addOr: <T extends QueryBase>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
597
598
  declare const addOrNot: <T extends QueryBase>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
598
599
  declare const addWhereIn: <T extends QueryBase>(q: T, and: boolean, arg: unknown, values: unknown[] | unknown[][] | Query | RawExpression | undefined, not?: boolean) => WhereResult<T>;
599
600
  declare abstract class Where extends QueryBase {
600
- where<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
601
- _where<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
602
- whereNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
603
- _whereNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
604
- and<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
605
- _and<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
606
- andNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
607
- _andNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
601
+ where<T extends Where>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
602
+ _where<T extends Where>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
603
+ whereNot<T extends Where>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
604
+ _whereNot<T extends Where>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
605
+ and<T extends Where>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
606
+ _and<T extends Where>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
607
+ andNot<T extends Where>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
608
+ _andNot<T extends Where>(this: T, ...args: WhereArgs<T>): WhereResult<T>;
608
609
  or<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
609
610
  _or<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
610
611
  orNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
@@ -691,7 +692,7 @@ type JoinLateralResult<T extends Query, R extends QueryBase, RequireJoined exten
691
692
  }>> = RequireMain extends true ? JoinAddSelectable<T, Selectable> : JoinOptionalMain<T, Selectable>;
692
693
  type JoinResultSelectable<J extends Pick<Query, 'result' | 'table' | 'meta'>, RequireJoined extends boolean, CbResult extends {
693
694
  meta: QueryMetaBase;
694
- }, Result extends ColumnsShape = RequireJoined extends true ? J['result'] : {
695
+ }, Result extends ColumnsShapeBase = RequireJoined extends true ? J['result'] : {
695
696
  [K in keyof J['result']]: NullableColumn<J['result'][K]>;
696
697
  }, As extends string = CbResult extends {
697
698
  meta: QueryMetaBase & {
@@ -711,15 +712,15 @@ type JoinResultSelectable<J extends Pick<Query, 'result' | 'table' | 'meta'>, Re
711
712
  type JoinAddSelectable<T extends Query, Selectable extends SelectableBase> = {
712
713
  [K in keyof T]: K extends 'selectable' ? T['selectable'] & Selectable : T[K];
713
714
  };
714
- type JoinOptionalMain<T extends Query, Selectable extends SelectableBase, Result extends ColumnsShape = {
715
+ type JoinOptionalMain<T extends Query, Selectable extends SelectableBase, Result extends ColumnsShapeBase = {
715
716
  [K in keyof T['result']]: NullableColumn<T['result'][K]>;
716
- }> = {
717
+ }, Data = GetQueryResult<T['returnType'], Result>> = {
717
718
  [K in keyof T]: K extends 'selectable' ? {
718
719
  [K in keyof T['selectable']]: {
719
720
  as: T['selectable'][K]['as'];
720
721
  column: NullableColumn<T['selectable'][K]['column']>;
721
722
  };
722
- } & Selectable : K extends 'result' ? Result : K extends 'then' ? QueryThen<T['returnType'], Result> : T[K];
723
+ } & Selectable : K extends 'result' ? Result : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
723
724
  };
724
725
  type JoinWithArgToQuery<With extends WithDataItem, Selectable extends SelectableBase = {
725
726
  [K in keyof With['shape']]: {
@@ -862,7 +863,7 @@ type DbTableOptions = {
862
863
  snakeCase?: boolean;
863
864
  } & QueryLogOptions;
864
865
  declare const anyShape: Record<string, ColumnType<unknown, orchid_core.BaseOperators, unknown>>;
865
- 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 {
866
+ 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 {
866
867
  new (adapter: Adapter, queryBuilder: Db<Table, Shape, Relations, CT>, table?: Table, shape?: Shape, options?: DbTableOptions): this;
867
868
  queryBuilder: Db;
868
869
  whereQueryBuilder: Query['whereQueryBuilder'];
@@ -871,7 +872,8 @@ interface Db<Table extends string | undefined = undefined, Shape extends Columns
871
872
  query: QueryData;
872
873
  selectable: SelectableFromShape<Shape, Table>;
873
874
  returnType: Query['returnType'];
874
- then: ThenResult<Pick<ColumnShapeOutput<Shape>, DefaultSelectColumns<Shape>[number]>[]>;
875
+ then: QueryThen<Data>;
876
+ catch: QueryCatch<Data>;
875
877
  windows: Query['windows'];
876
878
  defaultSelectColumns: DefaultSelectColumns<Shape>;
877
879
  relations: Relations;
@@ -906,16 +908,16 @@ declare const createDb: <CT extends Record<string, orchid_core.AnyColumnTypeCrea
906
908
  type WithArgsOptions = Omit<WithOptions, 'columns'> & {
907
909
  columns?: boolean | string[];
908
910
  };
909
- type WithArgs = [string, ColumnsShape, RawExpression] | [string, WithArgsOptions, ColumnsShape, RawExpression] | [string, Query | ((qb: Db) => Query)] | [string, WithArgsOptions, Query | ((qb: Db) => Query)];
910
- type WithShape<Args extends WithArgs> = Args[1] extends Query ? Args[1]['result'] : Args[1] extends (qb: Db) => Query ? ReturnType<Args[1]>['result'] : Args[2] extends Query ? Args[2]['result'] : Args[2] extends (qb: Db) => Query ? ReturnType<Args[2]>['result'] : Args[1] extends ColumnsShape ? Args[1] : Args[2] extends ColumnsShape ? Args[2] : Args[2] extends (t: ColumnTypes) => ColumnsShape ? ReturnType<Args[2]> extends ColumnsShape ? ReturnType<Args[2]> : never : never;
911
- type WithResult<T extends Query, Args extends WithArgs, Shape extends ColumnsShape> = AddQueryWith<T, {
911
+ type WithArgs = [string, ColumnsShapeBase, RawExpression] | [string, WithArgsOptions, ColumnsShapeBase, RawExpression] | [string, Query | ((qb: Db) => Query)] | [string, WithArgsOptions, Query | ((qb: Db) => Query)];
912
+ type WithShape<Args extends WithArgs> = Args[1] extends Query ? Args[1]['result'] : Args[1] extends (qb: Db) => Query ? ReturnType<Args[1]>['result'] : Args[2] extends Query ? Args[2]['result'] : Args[2] extends (qb: Db) => Query ? ReturnType<Args[2]>['result'] : Args[1] extends ColumnsShapeBase ? Args[1] : Args[2] extends ColumnsShapeBase ? Args[2] : Args[2] extends (t: ColumnTypes) => ColumnsShapeBase ? ReturnType<Args[2]> extends ColumnsShapeBase ? ReturnType<Args[2]> : never : never;
913
+ type WithResult<T extends Query, Args extends WithArgs, Shape extends ColumnsShapeBase> = AddQueryWith<T, {
912
914
  table: Args[0];
913
915
  shape: Shape;
914
916
  type: ColumnShapeOutput<Shape>;
915
917
  }>;
916
918
  declare class With {
917
- with<T extends Query, Args extends WithArgs, Shape extends ColumnsShape = WithShape<Args>>(this: T, ...args: Args): WithResult<T, Args, Shape>;
918
- _with<T extends Query, Args extends WithArgs, Shape extends ColumnsShape = WithShape<Args>>(this: T, ...args: Args): WithResult<T, Args, Shape>;
919
+ with<T extends Query, Args extends WithArgs, Shape extends ColumnsShapeBase = WithShape<Args>>(this: T, ...args: Args): WithResult<T, Args, Shape>;
920
+ _with<T extends Query, Args extends WithArgs, Shape extends ColumnsShapeBase = WithShape<Args>>(this: T, ...args: Args): WithResult<T, Args, Shape>;
919
921
  }
920
922
 
921
923
  type UnionArg<T extends Query> = (Omit<Query, 'result'> & {
@@ -1272,11 +1274,12 @@ type HavingArg<T extends Query = Query> = ({
1272
1274
  } & {
1273
1275
  count?: number | HavingArgObject<T, 'count'>;
1274
1276
  }) | Query | RawExpression;
1277
+ type HavingArgs<T extends Query> = [...args: HavingArg<T>[]] | [TemplateStringsArray, ...unknown[]];
1275
1278
  declare class Having {
1276
- having<T extends Query>(this: T, ...args: HavingArg<T>[]): T;
1277
- _having<T extends Query>(this: T, ...args: HavingArg<T>[]): T;
1278
- havingOr<T extends Query>(this: T, ...args: HavingArg<T>[]): T;
1279
- _havingOr<T extends Query>(this: T, ...args: HavingArg<T>[]): T;
1279
+ having<T extends Query>(this: T, ...args: HavingArgs<T>): T;
1280
+ _having<T extends Query>(this: T, ...args: HavingArgs<T>): T;
1281
+ havingOr<T extends Query>(this: T, ...args: HavingArgs<T>): T;
1282
+ _havingOr<T extends Query>(this: T, ...args: HavingArgs<T>): T;
1280
1283
  }
1281
1284
 
1282
1285
  declare class Window {
@@ -1364,11 +1367,12 @@ declare class QueryUpsertOrCreate {
1364
1367
  _orCreate<T extends UpsertThis>(this: T, data: UpsertCreateArg<T>): UpsertResult<T>;
1365
1368
  }
1366
1369
 
1367
- 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'> & {
1370
+ 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'> & {
1368
1371
  meta: Q['meta'];
1369
1372
  result: T['meta']['hasSelect'] extends true ? Spread<[T['result'], Q['result']]> : Q['result'];
1370
1373
  returnType: ReturnType;
1371
- then: T['meta']['hasSelect'] extends true ? QueryThen<ReturnType, Spread<[T['result'], Q['result']]>> : QueryThen<ReturnType, Q['result']>;
1374
+ then: QueryThen<Data>;
1375
+ catch: QueryCatch<Data>;
1372
1376
  selectable: T['selectable'] & Q['selectable'];
1373
1377
  windows: T['windows'] & Q['windows'];
1374
1378
  withData: T['withData'] & Q['withData'];
@@ -1378,8 +1382,36 @@ declare class MergeQueryMethods {
1378
1382
  _merge<T extends Query, Q extends Query>(this: T, q: Q): MergeQuery<T, Q>;
1379
1383
  }
1380
1384
 
1385
+ type SqlArgs<T extends Query> = SqlColumnArgs<T> | SqlNoColumnArgs;
1386
+ type SqlColumnArgs<T extends Query> = [column: ColumnFn<T>, params?: {
1387
+ raw?: string;
1388
+ values?: Values;
1389
+ }];
1390
+ type SqlColumnArgsWithSQL<T extends Query> = [column: ColumnFn<T>, params: {
1391
+ raw: string;
1392
+ }];
1393
+ type SqlNoColumnArgs = [params: {
1394
+ raw: string;
1395
+ values?: Values;
1396
+ }] | [params: {
1397
+ values: Values;
1398
+ }] | TemplateLiteralArgs;
1399
+ type Values = Record<string, unknown>;
1400
+ type ColumnFn<T extends Query> = (types: T['columnTypes']) => ColumnType;
1401
+ type TemplateLiteralArgs = [
1402
+ strings: TemplateStringsArray,
1403
+ ...values: unknown[]
1404
+ ];
1405
+ type SqlFn<C extends ColumnType> = (...args: TemplateLiteralArgs) => RawExpression<C>;
1406
+ type SqlResult<T extends Query, Args extends SqlArgs<T>> = Args extends SqlColumnArgs<T> ? Args extends SqlColumnArgsWithSQL<T> ? RawExpression<ReturnType<Args[0]>> : SqlFn<ReturnType<Args[0]>> : Args extends [{
1407
+ raw: string;
1408
+ }] | TemplateLiteralArgs ? RawExpression : SqlFn<ColumnType>;
1381
1409
  type RawArgs<CT extends ColumnTypesBase, C extends ColumnType> = [column: (types: CT) => C, sql: string, values?: Record<string, unknown>] | [sql: string, values?: Record<string, unknown>];
1382
- declare class RawMethods {
1410
+ declare class RawSqlMethods {
1411
+ sql<T extends Query, Args extends SqlArgs<T>>(this: T, ...args: Args): SqlResult<T, Args>;
1412
+ /**
1413
+ * @deprecated use `sql` method instead, `raw` will be removed
1414
+ */
1383
1415
  raw<T extends Query, C extends ColumnType>(this: T, ...args: RawArgs<T['columnTypes'], C>): RawExpression<C>;
1384
1416
  }
1385
1417
 
@@ -1407,7 +1439,9 @@ type OrderArg<T extends Query, Key extends PropertyKey = keyof T['selectable'] |
1407
1439
  }[keyof T['result']]> = Key | {
1408
1440
  [K in Key]?: SortDir;
1409
1441
  } | RawExpression;
1410
- interface QueryMethods extends Omit<AsMethods, 'result'>, Aggregate, Select, From, Join, With, Union, Json, Create, Update, Delete, Transaction, For, ColumnInfoMethods, Omit<Where, 'result'>, Clear, Having, Window, Then, QueryLog, QueryHooks, QueryUpsertOrCreate, QueryGet, MergeQueryMethods, RawMethods, CopyMethods {
1442
+ type OrderArgs<T extends Query> = OrderArg<T>[] | [TemplateStringsArray, ...unknown[]];
1443
+ type FindArgs<T extends Query> = [T['shape'][T['singlePrimaryKey']]['type'] | RawExpression] | [TemplateStringsArray, ...unknown[]];
1444
+ interface QueryMethods extends Omit<AsMethods, 'result'>, Aggregate, Select, From, Join, With, Union, Json, Create, Update, Delete, Transaction, For, ColumnInfoMethods, Omit<Where, 'result'>, Clear, Having, Window, Then, QueryLog, QueryHooks, QueryUpsertOrCreate, QueryGet, MergeQueryMethods, RawSqlMethods, CopyMethods {
1411
1445
  }
1412
1446
  declare class QueryMethods {
1413
1447
  windows: EmptyObject;
@@ -1427,10 +1461,10 @@ declare class QueryMethods {
1427
1461
  toSql(this: Query, options?: ToSqlOptions): Sql;
1428
1462
  distinct<T extends Query>(this: T, ...columns: Expression<T>[]): T;
1429
1463
  _distinct<T extends Query>(this: T, ...columns: Expression<T>[]): T;
1430
- find<T extends Query>(this: T, value: T['shape'][T['singlePrimaryKey']]['type'] | RawExpression): SetQueryReturnsOne<WhereResult<T>>;
1431
- _find<T extends Query>(this: T, value: T['shape'][T['singlePrimaryKey']]['type'] | RawExpression): SetQueryReturnsOne<WhereResult<T>>;
1432
- findOptional<T extends Query>(this: T, value: T['shape'][T['singlePrimaryKey']]['type'] | RawExpression): SetQueryReturnsOneOptional<WhereResult<T>>;
1433
- _findOptional<T extends Query>(this: T, value: T['shape'][T['singlePrimaryKey']]['type'] | RawExpression): SetQueryReturnsOneOptional<WhereResult<T>>;
1464
+ find<T extends Query>(this: T, ...args: FindArgs<T>): SetQueryReturnsOne<WhereResult<T>>;
1465
+ _find<T extends Query>(this: T, ...args: FindArgs<T>): SetQueryReturnsOne<WhereResult<T>>;
1466
+ findOptional<T extends Query>(this: T, ...args: FindArgs<T>): SetQueryReturnsOneOptional<WhereResult<T>>;
1467
+ _findOptional<T extends Query>(this: T, ...args: FindArgs<T>): SetQueryReturnsOneOptional<WhereResult<T>>;
1434
1468
  findBy<T extends Query>(this: T, ...args: WhereArg<T>[]): SetQueryReturnsOne<WhereResult<T>>;
1435
1469
  _findBy<T extends Query>(this: T, ...args: WhereArg<T>[]): SetQueryReturnsOne<WhereResult<T>>;
1436
1470
  findByOptional<T extends Query>(this: T, ...args: WhereArg<T>[]): SetQueryReturnsOneOptional<WhereResult<T>>;
@@ -1443,8 +1477,8 @@ declare class QueryMethods {
1443
1477
  _window<T extends Query, W extends WindowArg<T>>(this: T, arg: W): WindowResult<T, W>;
1444
1478
  wrap<T extends Query, Q extends Query, As extends string = 't'>(this: T, query: Q, as?: As): SetQueryTableAlias<Q, As>;
1445
1479
  _wrap<T extends Query, Q extends Query, As extends string = 't'>(this: T, query: Q, as?: As): SetQueryTableAlias<Q, As>;
1446
- order<T extends Query>(this: T, ...args: OrderArg<T>[]): T;
1447
- _order<T extends Query>(this: T, ...args: OrderArg<T>[]): T;
1480
+ order<T extends Query>(this: T, ...args: OrderArgs<T>): T;
1481
+ _order<T extends Query>(this: T, ...args: OrderArgs<T>): T;
1448
1482
  limit<T extends Query>(this: T, arg: number | undefined): T;
1449
1483
  _limit<T extends Query>(this: T, arg: number | undefined): T;
1450
1484
  offset<T extends Query>(this: T, arg: number | undefined): T;
@@ -1471,7 +1505,7 @@ type AggregateOptions<T extends Query = Query, As extends string | undefined = a
1471
1505
  withinGroup?: boolean;
1472
1506
  over?: keyof T['windows'] | WindowArgDeclaration<T>;
1473
1507
  };
1474
- type Aggregate1ArgumentTypes<T extends Query = Query, C extends ColumnType = ColumnType> = {
1508
+ type Aggregate1ArgumentTypes<T extends Query = Query, C extends ColumnTypeBase = ColumnTypeBase> = {
1475
1509
  count: Expression<T, C>;
1476
1510
  avg: NumberExpression<T, C>;
1477
1511
  min: Expression<T, C>;
@@ -1599,7 +1633,7 @@ type ColumnParser = (input: unknown) => unknown;
1599
1633
  type ColumnsParsers = Record<string | getValueKey, ColumnParser>;
1600
1634
  type SelectableBase = Record<PropertyKey, {
1601
1635
  as: string;
1602
- column: ColumnType;
1636
+ column: ColumnTypeBase;
1603
1637
  }>;
1604
1638
  type SelectableFromShape<Shape extends ColumnsShapeBase, Table extends string | undefined> = {
1605
1639
  [K in keyof Shape]: {
@@ -1614,7 +1648,7 @@ type SelectableFromShape<Shape extends ColumnsShapeBase, Table extends string |
1614
1648
  };
1615
1649
  type WithDataItem = {
1616
1650
  table: string;
1617
- shape: ColumnsShape;
1651
+ shape: ColumnsShapeBase;
1618
1652
  };
1619
1653
  type WithDataBase = Record<never, WithDataItem>;
1620
1654
  type Query = QueryCommon & QueryMethods & {
@@ -1629,10 +1663,11 @@ type Query = QueryCommon & QueryMethods & {
1629
1663
  type: Record<string, unknown>;
1630
1664
  inputType: Record<string, unknown>;
1631
1665
  query: QueryData;
1632
- result: ColumnsShape;
1666
+ result: ColumnsShapeBase;
1633
1667
  selectable: SelectableBase;
1634
1668
  returnType: QueryReturnType;
1635
- then: ThenResult<unknown>;
1669
+ then: QueryThen<unknown>;
1670
+ catch: QueryCatch<unknown>;
1636
1671
  windows: EmptyObject;
1637
1672
  defaultSelectColumns: string[];
1638
1673
  relations: RelationsBase;
@@ -1649,32 +1684,32 @@ type QueryReturnType = 'all' | 'one' | 'oneOrThrow' | 'rows' | 'pluck' | 'value'
1649
1684
  declare const queryTypeWithLimitOne: Record<QueryReturnType, true | undefined>;
1650
1685
  declare const isQueryReturnsAll: (q: Query) => boolean;
1651
1686
  type QueryReturnsAll<T extends QueryReturnType> = (QueryReturnType extends T ? 'all' : T) extends 'all' ? true : false;
1652
- 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 {
1687
+ 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 {
1653
1688
  value: ColumnType;
1654
- } ? ThenResult<Result['value']['type'] | undefined> : never : ReturnType extends 'valueOrThrow' ? Result extends {
1689
+ } ? Result['value']['type'] | undefined : never : ReturnType extends 'valueOrThrow' ? Result extends {
1655
1690
  value: ColumnType;
1656
- } ? ThenResult<Result['value']['type']> : never : ReturnType extends 'rows' ? ThenResult<ColumnShapeOutput<Result>[keyof Result][][]> : ReturnType extends 'pluck' ? Result extends {
1691
+ } ? Result['value']['type'] : never : ReturnType extends 'rows' ? ColumnShapeOutput<Result>[keyof Result][][] : ReturnType extends 'pluck' ? Result extends {
1657
1692
  pluck: ColumnType;
1658
- } ? ThenResult<Result['pluck']['type'][]> : never : ReturnType extends 'rowCount' ? ThenResult<number> : ReturnType extends 'void' ? ThenResult<void> : never;
1659
- type AddQuerySelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase> = T['meta']['hasSelect'] extends true ? MergeSelect<T, Result> : {
1660
- [K in keyof T]: K extends 'meta' ? T['meta'] & {
1661
- hasSelect: true;
1662
- } : K extends 'result' ? Result : K extends 'then' ? QueryThen<T['returnType'], Result> : T[K];
1663
- };
1664
- type MergeSelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase, Merged extends ColumnsShapeBase = {
1693
+ } ? Result['pluck']['type'][] : never : ReturnType extends 'rowCount' ? number : ReturnType extends 'void' ? void : never;
1694
+ 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>;
1695
+ type MergeSelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase, Data, Merged extends ColumnsShapeBase = {
1665
1696
  [K in keyof T['result']]: K extends keyof Result ? unknown : T['result'][K];
1666
1697
  } & Result> = {
1667
- [K in keyof T]: K extends 'result' ? Merged : K extends 'then' ? QueryThen<T['returnType'], Merged> : T[K];
1698
+ [K in keyof T]: K extends 'result' ? Merged : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
1699
+ };
1700
+ type SetSelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase, Data> = {
1701
+ [K in keyof T]: K extends 'meta' ? T['meta'] & {
1702
+ hasSelect: true;
1703
+ } : K extends 'result' ? Result : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
1668
1704
  };
1669
- type SetQueryReturns<T extends Query, R extends QueryReturnType> = Omit<T, 'returnType' | 'then'> & {
1670
- returnType: R;
1671
- then: QueryThen<R, T['result']>;
1705
+ type SetQueryReturns<T extends Query, R extends QueryReturnType, Data = GetQueryResult<R, T['result']>> = {
1706
+ [K in keyof T]: K extends 'returnType' ? R : K extends 'then' ? QueryThen<Data> : K extends 'catch' ? QueryCatch<Data> : T[K];
1672
1707
  };
1673
1708
  type SetQueryReturnsAll<T extends Query> = SetQueryReturns<T, 'all'>;
1674
1709
  type SetQueryReturnsOneOptional<T extends Query> = SetQueryReturns<T, 'one'>;
1675
1710
  type SetQueryReturnsOne<T extends Query> = SetQueryReturns<T, 'oneOrThrow'>;
1676
1711
  type SetQueryReturnsRows<T extends Query> = SetQueryReturns<T, 'rows'>;
1677
- 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'> & {
1712
+ 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'> & {
1678
1713
  meta: {
1679
1714
  hasSelect: true;
1680
1715
  };
@@ -1682,9 +1717,10 @@ type SetQueryReturnsPluck<T extends Query, S extends keyof T['selectable'] | Raw
1682
1717
  pluck: C;
1683
1718
  };
1684
1719
  returnType: 'pluck';
1685
- then: ThenResult<C['type'][]>;
1720
+ then: QueryThen<C['type'][]>;
1721
+ catch: QueryCatch<C['type'][]>;
1686
1722
  };
1687
- 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'> & {
1723
+ 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'> & {
1688
1724
  meta: {
1689
1725
  hasSelect: true;
1690
1726
  };
@@ -1692,9 +1728,10 @@ type SetQueryReturnsValueOptional<T extends Query, Arg extends Exclude<GetArg<T>
1692
1728
  value: Column;
1693
1729
  };
1694
1730
  returnType: 'value';
1695
- then: ThenResult<Column['type'] | undefined>;
1731
+ then: QueryThen<Column['type'] | undefined>;
1732
+ catch: QueryThen<Column['type'] | undefined>;
1696
1733
  };
1697
- 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'> & {
1734
+ 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'> & {
1698
1735
  meta: {
1699
1736
  hasSelect: true;
1700
1737
  };
@@ -1702,16 +1739,18 @@ type SetQueryReturnsValue<T extends Query, Arg extends Exclude<GetArg<T>, RawExp
1702
1739
  value: Column;
1703
1740
  };
1704
1741
  returnType: 'valueOrThrow';
1705
- then: ThenResult<Column['type']>;
1742
+ then: QueryThen<Column['type']>;
1743
+ catch: QueryCatch<Column['type']>;
1706
1744
  };
1707
1745
  type SetQueryReturnsRowCount<T extends Query> = SetQueryReturns<T, 'rowCount'>;
1708
1746
  type SetQueryReturnsVoid<T extends Query> = SetQueryReturns<T, 'void'>;
1709
- 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'> & {
1747
+ 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'> & {
1710
1748
  result: {
1711
1749
  value: ColumnType<Result>;
1712
1750
  };
1713
1751
  returnType: 'value';
1714
- then: ThenResult<Result>;
1752
+ then: QueryThen<Result>;
1753
+ catch: QueryCatch<Result>;
1715
1754
  };
1716
1755
  type SetQueryTableAlias<T extends Pick<Query, 'selectable' | 'table' | 'meta'> & {
1717
1756
  shape: ColumnsShapeBase;
@@ -1783,11 +1822,11 @@ declare const Operators: {
1783
1822
  not: ((key: string, value: number | RawExpression | Query, values: unknown[]) => string) & {
1784
1823
  type: number | RawExpression | Query;
1785
1824
  };
1786
- in: ((key: string, value: RawExpression | Query | number[], values: unknown[]) => string) & {
1787
- type: RawExpression | Query | number[];
1825
+ in: ((key: string, value: RawExpression | number[] | Query, values: unknown[]) => string) & {
1826
+ type: RawExpression | number[] | Query;
1788
1827
  };
1789
- notIn: ((key: string, value: RawExpression | Query | number[], values: unknown[]) => string) & {
1790
- type: RawExpression | Query | number[];
1828
+ notIn: ((key: string, value: RawExpression | number[] | Query, values: unknown[]) => string) & {
1829
+ type: RawExpression | number[] | Query;
1791
1830
  };
1792
1831
  };
1793
1832
  date: {
@@ -1920,7 +1959,7 @@ declare const Operators: {
1920
1959
  };
1921
1960
 
1922
1961
  type ColumnsShape = Record<string, ColumnType>;
1923
- declare abstract class ColumnsObject<Shape extends ColumnsShape> extends ColumnType<{
1962
+ declare abstract class ColumnsObject<Shape extends ColumnsShapeBase> extends ColumnType<{
1924
1963
  [K in keyof Shape]: Shape[K]['type'];
1925
1964
  }, typeof Operators.any> {
1926
1965
  shape: Shape;
@@ -1941,7 +1980,7 @@ declare abstract class ColumnsObject<Shape extends ColumnsShape> extends ColumnT
1941
1980
  };
1942
1981
  constructor(shape: Shape);
1943
1982
  }
1944
- declare abstract class ArrayOfColumnsObjects<Shape extends ColumnsShape> extends ColumnType<{
1983
+ declare abstract class ArrayOfColumnsObjects<Shape extends ColumnsShapeBase> extends ColumnType<{
1945
1984
  [K in keyof Shape]: Shape[K]['type'];
1946
1985
  }[], typeof Operators.any> {
1947
1986
  shape: Shape;
@@ -1962,7 +2001,7 @@ declare abstract class ArrayOfColumnsObjects<Shape extends ColumnsShape> extends
1962
2001
  };
1963
2002
  constructor(shape: Shape);
1964
2003
  }
1965
- declare abstract class PluckResultColumnType<C extends ColumnType> extends ColumnType<C['type'][], typeof Operators.any> {
2004
+ declare abstract class PluckResultColumnType<C extends ColumnTypeBase> extends ColumnTypeBase<C['type'][], typeof Operators.any> {
1966
2005
  }
1967
2006
 
1968
2007
  type NumberColumn = ColumnType<number, typeof Operators.number>;
@@ -1999,11 +2038,11 @@ declare abstract class NumberBaseColumn extends ColumnType<number, typeof Operat
1999
2038
  not: ((key: string, value: number | RawExpression | Query, values: unknown[]) => string) & {
2000
2039
  type: number | RawExpression | Query;
2001
2040
  };
2002
- in: ((key: string, value: RawExpression | Query | number[], values: unknown[]) => string) & {
2003
- type: RawExpression | Query | number[];
2041
+ in: ((key: string, value: RawExpression | number[] | Query, values: unknown[]) => string) & {
2042
+ type: RawExpression | number[] | Query;
2004
2043
  };
2005
- notIn: ((key: string, value: RawExpression | Query | number[], values: unknown[]) => string) & {
2006
- type: RawExpression | Query | number[];
2044
+ notIn: ((key: string, value: RawExpression | number[] | Query, values: unknown[]) => string) & {
2045
+ type: RawExpression | number[] | Query;
2007
2046
  };
2008
2047
  };
2009
2048
  }
@@ -2034,11 +2073,11 @@ declare abstract class NumberAsStringBaseColumn extends ColumnType<string, typeo
2034
2073
  not: ((key: string, value: number | RawExpression | Query, values: unknown[]) => string) & {
2035
2074
  type: number | RawExpression | Query;
2036
2075
  };
2037
- in: ((key: string, value: RawExpression | Query | number[], values: unknown[]) => string) & {
2038
- type: RawExpression | Query | number[];
2076
+ in: ((key: string, value: RawExpression | number[] | Query, values: unknown[]) => string) & {
2077
+ type: RawExpression | number[] | Query;
2039
2078
  };
2040
- notIn: ((key: string, value: RawExpression | Query | number[], values: unknown[]) => string) & {
2041
- type: RawExpression | Query | number[];
2079
+ notIn: ((key: string, value: RawExpression | number[] | Query, values: unknown[]) => string) & {
2080
+ type: RawExpression | number[] | Query;
2042
2081
  };
2043
2082
  };
2044
2083
  data: ColumnData;
@@ -2070,11 +2109,11 @@ declare class DecimalBaseColumn<Precision extends number | undefined = undefined
2070
2109
  not: ((key: string, value: number | RawExpression | Query, values: unknown[]) => string) & {
2071
2110
  type: number | RawExpression | Query;
2072
2111
  };
2073
- in: ((key: string, value: RawExpression | Query | number[], values: unknown[]) => string) & {
2074
- type: RawExpression | Query | number[];
2112
+ in: ((key: string, value: RawExpression | number[] | Query, values: unknown[]) => string) & {
2113
+ type: RawExpression | number[] | Query;
2075
2114
  };
2076
- notIn: ((key: string, value: RawExpression | Query | number[], values: unknown[]) => string) & {
2077
- type: RawExpression | Query | number[];
2115
+ notIn: ((key: string, value: RawExpression | number[] | Query, values: unknown[]) => string) & {
2116
+ type: RawExpression | number[] | Query;
2078
2117
  };
2079
2118
  };
2080
2119
  dataType: "decimal";
@@ -3334,9 +3373,9 @@ type ArrayData<Item extends ColumnTypeBase> = ColumnData & ArrayMethodsData & {
3334
3373
  item: Item;
3335
3374
  };
3336
3375
  type ArrayMethods = typeof arrayMethods;
3337
- interface ArrayColumn<Item extends ColumnType> extends ColumnType<Item['type'][], typeof Operators.array>, ArrayMethods {
3376
+ interface ArrayColumn<Item extends ColumnTypeBase> extends ColumnType<Item['type'][], typeof Operators.array>, ArrayMethods {
3338
3377
  }
3339
- declare class ArrayColumn<Item extends ColumnType> extends ColumnType<Item['type'][], typeof Operators.array> {
3378
+ declare class ArrayColumn<Item extends ColumnTypeBase> extends ColumnType<Item['type'][], typeof Operators.array> {
3340
3379
  dataType: "array";
3341
3380
  operators: {
3342
3381
  equals: ((key: string, value: any, values: unknown[]) => string) & {
@@ -3435,6 +3474,10 @@ declare const getTableData: () => TableData;
3435
3474
  declare const resetTableData: (data?: TableData) => void;
3436
3475
  declare const getColumnTypes: <CT extends Record<string, orchid_core.AnyColumnTypeCreator>, Shape extends ColumnsShape>(types: CT, fn: (t: CT) => Shape, nowSQL: string | undefined, data?: TableData) => Shape;
3437
3476
  declare function text(min: number, max: number): TextColumn;
3477
+ declare function sql(sql: TemplateStringsArray, ...values: unknown[]): RawExpression;
3478
+ declare function sql(sql: string): RawExpression;
3479
+ declare function sql(values: Record<string, unknown>, sql: string): RawExpression;
3480
+ declare function sql(values: Record<string, unknown>): (...sql: [TemplateStringsArray, ...unknown[]]) => RawExpression;
3438
3481
  type DefaultColumnTypes = typeof columnTypes;
3439
3482
  declare const columnTypes: {
3440
3483
  timestamps<T extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
@@ -3482,7 +3525,7 @@ declare const columnTypes: {
3482
3525
  updatedAt: orchid_core.ColumnWithDefault<T_3, RawExpression>;
3483
3526
  };
3484
3527
  name: typeof name;
3485
- raw: (sql: string, values?: false | Record<string, unknown> | undefined) => RawExpression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>;
3528
+ sql: typeof sql;
3486
3529
  smallint(): SmallIntColumn;
3487
3530
  integer(): IntegerColumn;
3488
3531
  bigint(): BigIntColumn;
@@ -3734,4 +3777,4 @@ declare const testTransaction: {
3734
3777
  close(arg: Arg): Promise<void>;
3735
3778
  };
3736
3779
 
3737
- 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, 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, OrderItem, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, Query, QueryArraysResult, QueryBase, QueryData, QueryError, QueryErrorName, QueryGet, QueryHooks, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryReturnType, QueryReturnsAll, QueryThen, QueryUpsertOrCreate, QueryWithTable, RawMethods, 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, 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 };
3780
+ 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, 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, 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 };