pqb 0.30.2 → 0.30.4

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, 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, QueryColumnBooleanOrNull, 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, PickQueryMetaResultWindows, CoreBaseOperators, PickQueryUniqueProperties, IsQuery, PickQueryMetaShapeResultReturnType, MergeObjects, ExpressionData, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, PickOutputType, PickQueryMetaReturnType, UniqueColumn, TimestampHelpers, Codes, ColumnDataCheckBase, PickQueryTableMetaShape } from 'orchid-core';
2
+ import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, 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, PickQueryMetaShapeResultReturnType, MergeObjects, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, 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';
@@ -1054,7 +1054,8 @@ declare class Join {
1054
1054
  * ```ts
1055
1055
  * db.user.join(
1056
1056
  * db.message,
1057
- * db.user.sql`lower("message"."text") = lower("user"."name")`,
1057
+ * // `sql` can be imported from your `BaseTable` file
1058
+ * sql`lower("message"."text") = lower("user"."name")`,
1058
1059
  * );
1059
1060
  * ```
1060
1061
  *
@@ -1063,16 +1064,16 @@ declare class Join {
1063
1064
  * ```ts
1064
1065
  * db.user.join(
1065
1066
  * db.message,
1066
- * db.user.sql`lower("message"."text")`,
1067
- * db.user.sql`lower("user"."name")`,
1067
+ * sql`lower("message"."text")`,
1068
+ * sql`lower("user"."name")`,
1068
1069
  * );
1069
1070
  *
1070
1071
  * // with operator:
1071
1072
  * db.user.join(
1072
1073
  * db.message,
1073
- * db.user.sql`lower("message"."text")`,
1074
+ * sql`lower("message"."text")`,
1074
1075
  * '!=',
1075
- * db.user.sql`lower("user"."name")`,
1076
+ * sql`lower("user"."name")`,
1076
1077
  * );
1077
1078
  * ```
1078
1079
  *
@@ -1086,7 +1087,7 @@ declare class Join {
1086
1087
  * 'message.userId': 'user.id',
1087
1088
  *
1088
1089
  * // value can be a raw SQL expression:
1089
- * text: db.user.sql`lower("user"."name")`,
1090
+ * text: sql`lower("user"."name")`,
1090
1091
  * });
1091
1092
  * ```
1092
1093
  *
@@ -1426,12 +1427,184 @@ declare class OnMethods {
1426
1427
  onJsonPathEquals<T extends PickQueryMeta>(this: T, ...args: OnJsonPathEqualsArgs<T['meta']['selectable']>): T;
1427
1428
  }
1428
1429
 
1430
+ interface AggregateOptions<T extends PickQueryMetaResultRelationsWindows> {
1431
+ distinct?: boolean;
1432
+ order?: OrderArg<T> | OrderArg<T>[];
1433
+ filter?: WhereArg<T>;
1434
+ filterOr?: WhereArg<T>[];
1435
+ withinGroup?: boolean;
1436
+ over?: Over<T>;
1437
+ }
1438
+ type Over<T extends PickQueryMetaResultWindows> = keyof T['windows'] | WindowArgDeclaration<T>;
1439
+ type FnExpressionArgs<Q extends PickQueryMeta> = (SelectableOrExpression<Q> | FnExpressionArgsPairs<Q> | FnExpressionArgsValue)[];
1440
+ interface FnExpressionArgsPairs<Q extends PickQueryMeta> {
1441
+ pairs: {
1442
+ [K: string]: SelectableOrExpression<Q>;
1443
+ };
1444
+ }
1445
+ interface FnExpressionArgsValue {
1446
+ value: unknown;
1447
+ }
1448
+ declare class FnExpression<Q extends Query = Query, T extends QueryColumn = QueryColumn> extends Expression<T> {
1449
+ query: Q;
1450
+ fn: string;
1451
+ args: FnExpressionArgs<Q>;
1452
+ options: AggregateOptions<Q>;
1453
+ result: {
1454
+ value: T;
1455
+ };
1456
+ q: QueryData;
1457
+ /**
1458
+ * @param query - query object.
1459
+ * @param fn - SQL function name.
1460
+ * @param args - arguments of the function.
1461
+ * @param options - aggregate options.
1462
+ * @param value - column type of the function result.
1463
+ */
1464
+ constructor(query: Q, fn: string, args: FnExpressionArgs<Q>, options: AggregateOptions<Q>, value: T);
1465
+ makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
1466
+ }
1467
+ type ColumnExpression<C extends QueryColumn, Ops extends BaseOperators = C['operators']> = Expression<C> & {
1468
+ [K in keyof Ops]: (arg: Ops[K]['_opType']) => ColumnExpression<QueryColumnBooleanOrNull>;
1469
+ };
1470
+ 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'];
1471
+
1472
+ declare class ColumnRefExpression<T extends QueryColumn> extends Expression<T> {
1473
+ name: string;
1474
+ result: {
1475
+ value: T;
1476
+ };
1477
+ q: ExpressionData;
1478
+ constructor(value: T, name: string);
1479
+ makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
1480
+ }
1481
+ declare class RefExpression<T extends QueryColumn> extends Expression<T> {
1482
+ q: QueryData;
1483
+ ref: string;
1484
+ result: {
1485
+ value: T;
1486
+ };
1487
+ constructor(value: T, q: QueryData, ref: string);
1488
+ makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
1489
+ }
1490
+ type OrExpressionArg = QueryOrExpressionBooleanOrNullResult | undefined;
1491
+ interface OrExpression extends Expression<BooleanQueryColumn>, OperatorsBoolean {
1492
+ }
1493
+ declare class OrExpression extends Expression<BooleanQueryColumn> {
1494
+ args: [OrExpressionArg, ...OrExpressionArg[]];
1495
+ result: {
1496
+ value: BooleanQueryColumn;
1497
+ };
1498
+ q: ExpressionData;
1499
+ constructor(args: [OrExpressionArg, ...OrExpressionArg[]]);
1500
+ makeSQL(ctx: {
1501
+ values: unknown[];
1502
+ }, quotedAs?: string): string;
1503
+ }
1504
+ interface QueryReturnsFnAdd<T extends PickQueryColumnTypes> extends QueryMetaHasSelect {
1505
+ type<C extends QueryColumn>(fn: (types: T['columnTypes']) => C): {
1506
+ [K in keyof T]: K extends 'result' ? {
1507
+ value: C;
1508
+ } : K extends 'returnType' ? 'valueOrThrow' : K extends 'then' ? QueryThen<C['outputType']> : T[K];
1509
+ } & C['operators'];
1510
+ }
1511
+ type SetQueryReturnsFn<T extends PickQueryColumnTypes, C extends PickOutputType> = {
1512
+ [K in keyof T]: K extends 'result' ? {
1513
+ value: C;
1514
+ } : K extends 'returnType' ? 'valueOrThrow' : K extends 'then' ? QueryThen<C['outputType']> : T[K];
1515
+ } & QueryReturnsFnAdd<T>;
1516
+ declare class ExpressionMethods {
1517
+ /**
1518
+ * `column` references a table column, this can be used in raw SQL or when building a column expression.
1519
+ * Only for referencing a column in the query's table. For referencing joined table's columns, see [ref](#ref).
1520
+ *
1521
+ * ```ts
1522
+ * await db.table.select({
1523
+ * // select `("table"."id" = 1 OR "table"."name" = 'name') AS "one"`,
1524
+ * // returns a boolean
1525
+ * one: (q) =>
1526
+ * q.sql<boolean>`${q.column('id')} = ${1} OR ${q.column('name')} = ${'name'}`,
1527
+ *
1528
+ * // selects the same as above, but by building a query
1529
+ * two: (q) => q.column('id').equals(1).or(q.column('name').equals('name')),
1530
+ * });
1531
+ * ```
1532
+ *
1533
+ * @param name - column name
1534
+ */
1535
+ column<T extends PickQueryShape, K extends keyof T['shape']>(this: T, name: K): ColumnRefExpression<T['shape'][K]> & T['shape'][K]['operators'];
1536
+ /**
1537
+ * `ref` is similar to [column](#column), but it also allows to reference a column of joined table,
1538
+ * and other dynamically defined columns.
1539
+ *
1540
+ * ```ts
1541
+ * await db.table.join('otherTable').select({
1542
+ * // select `("otherTable"."id" = 1 OR "otherTable"."name" = 'name') AS "one"`,
1543
+ * // returns a boolean
1544
+ * one: (q) =>
1545
+ * q.sql<boolean>`${q.ref('otherTable.id')} = ${1} OR ${q.ref(
1546
+ * 'otherTable.name',
1547
+ * )} = ${'name'}`,
1548
+ *
1549
+ * // selects the same as above, but by building a query
1550
+ * two: (q) =>
1551
+ * q
1552
+ * .ref('otherTable.id')
1553
+ * .equals(1)
1554
+ * .or(q.ref('otherTable.name').equals('name')),
1555
+ * });
1556
+ * ```
1557
+ *
1558
+ * @param arg - any available column name, such as of a joined table
1559
+ */
1560
+ ref<T extends PickQueryMeta, K extends keyof T['meta']['selectable'] & string>(this: T, arg: K): RefExpression<T['meta']['selectable'][K]['column']> & T['meta']['selectable'][K]['column']['operators'];
1561
+ val(value: unknown): ValExpression;
1562
+ /**
1563
+ * `fn` allows to call an arbitrary SQL function.
1564
+ *
1565
+ * For example, calling `sqrt` function to get a square root from some numeric column:
1566
+ *
1567
+ * ```ts
1568
+ * const q = await User.select({
1569
+ * sqrt: (q) => q.fn<number>('sqrt', ['numericColumn']),
1570
+ * }).take();
1571
+ *
1572
+ * q.sqrt; // has type `number` just as provided
1573
+ * ```
1574
+ *
1575
+ * If this is an aggregate function, you can specify aggregation options (see [Aggregate](/guide/aggregate.html)) via third parameter.
1576
+ *
1577
+ * Use `type` method to specify a column type so that its operators such as `lt` and `gt` become available:
1578
+ *
1579
+ * ```ts
1580
+ * const q = await User.select({
1581
+ * // Produces `sqrt("numericColumn") > 5`
1582
+ * sqrtIsGreaterThan5: (q) =>
1583
+ * q
1584
+ * .fn('sqrt', ['numericColumn'])
1585
+ * .type((t) => t.float())
1586
+ * .gt(5),
1587
+ * }).take();
1588
+ *
1589
+ * // Return type is boolean | null
1590
+ * // todo: it should be just boolean if the column is not nullable, but for now it's always nullable
1591
+ * q.sqrtIsGreaterThan5;
1592
+ * ```
1593
+ *
1594
+ * @param fn
1595
+ * @param args
1596
+ * @param options
1597
+ */
1598
+ fn<T extends PickQueryMetaResultRelationsWindowsColumnTypes, Type = unknown, C extends QueryColumn = QueryColumn<Type>>(this: T, fn: string, args: SelectableOrExpression<T>[], options?: AggregateOptions<T>): SetQueryReturnsFn<T, C>;
1599
+ or(...args: [OrExpressionArg, ...OrExpressionArg[]]): OrExpression;
1600
+ }
1601
+
1429
1602
  type WhereArg<T extends PickQueryMetaRelations> = {
1430
1603
  [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<{
1431
1604
  columns: (keyof T['meta']['selectable'])[];
1432
1605
  values: unknown[][] | QueryBase | Expression;
1433
- }> : T['meta']['selectable'][K]['column']['queryType'] | null | ColumnOperators<T['meta']['selectable'], K> | Expression | QueryBase;
1434
- } | QueryBase | Expression<QueryColumnBooleanOrNull> | ((q: WhereQueryBuilder<T>) => QueryColumnBooleanOrNull | QueryBaseThen<boolean | null> | WhereQueryBuilder<T>);
1606
+ }> : 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>);
1607
+ } | QueryOrExpressionBooleanOrNullResult | ((q: WhereQueryBuilder<T>) => QueryOrExpressionBooleanOrNullResult | WhereQueryBuilder<T>);
1435
1608
  /**
1436
1609
  * Callback argument of `where`.
1437
1610
  * It has `where` methods (`where`, `whereNot`, `whereExists`, etc.),
@@ -1441,9 +1614,9 @@ type WhereArg<T extends PickQueryMetaRelations> = {
1441
1614
  * ```
1442
1615
  */
1443
1616
  type WhereQueryBuilder<T extends PickQueryRelations> = RelationsBase extends T['relations'] ? {
1444
- [K in keyof T]: K extends keyof QueryBase | keyof Where ? T[K] : never;
1617
+ [K in keyof T]: K extends keyof QueryBase | keyof Where | keyof ExpressionMethods | 'sql' ? T[K] : never;
1445
1618
  } : {
1446
- [K in keyof T]: K extends keyof T['relations'] ? T['relations'][K] : T[K];
1619
+ [K in keyof T]: K extends keyof T['relations'] ? T['relations'][K] : K extends keyof QueryBase | keyof Where | keyof ExpressionMethods | 'sql' ? T[K] : never;
1447
1620
  };
1448
1621
  type WhereArgs<T extends PickQueryMetaRelations> = WhereArg<T>[];
1449
1622
  type WhereNotArgs<T extends PickQueryMetaRelations> = [WhereArg<T>];
@@ -1515,7 +1688,13 @@ declare class Where {
1515
1688
  * },
1516
1689
  *
1517
1690
  * // where column equals to raw SQL
1518
- * column: db.table.sql`sql expression`,
1691
+ * // import `sql` from your `BaseTable`
1692
+ * column: sql`sql expression`,
1693
+ * // or use `(q) => q.sql` for the same
1694
+ * column2: (q) => q.sql`sql expression`,
1695
+ *
1696
+ * // reference other columns in such a way:
1697
+ * firstName: (q) => q.ref('lastName'),
1519
1698
  * });
1520
1699
  * ```
1521
1700
  *
@@ -1564,12 +1743,7 @@ declare class Where {
1564
1743
  * `where` supports raw SQL:
1565
1744
  *
1566
1745
  * ```ts
1567
- * db.table.where(db.table.sql`a = b`);
1568
- *
1569
- * // or
1570
- * import { raw } from 'orchid-orm';
1571
- *
1572
- * db.table.where(raw`a = b`);
1746
+ * db.table.where(sql`a = b`);
1573
1747
  * ```
1574
1748
  *
1575
1749
  * `where` can accept a callback with a specific query builder containing all "where" methods such as `where`, `orWhere`, `whereNot`, `whereIn`, `whereExists`:
@@ -1590,7 +1764,7 @@ declare class Where {
1590
1764
  * db.table.where(
1591
1765
  * { id: 1 },
1592
1766
  * db.table.where({ name: 'John' }),
1593
- * db.table.sql`a = b`,
1767
+ * sql`a = b`,
1594
1768
  * );
1595
1769
  * ```
1596
1770
  *
@@ -1703,8 +1877,6 @@ declare class Where {
1703
1877
  * All column operators can take a value of the same type as the column, a sub-query, or a raw SQL expression:
1704
1878
  *
1705
1879
  * ```ts
1706
- * import { sql } from 'orchid-orm';
1707
- *
1708
1880
  * db.table.where({
1709
1881
  * numericColumn: {
1710
1882
  * // lower than 5
@@ -1753,7 +1925,7 @@ declare class Where {
1753
1925
  * // WHERE "column" IN (SELECT "column" FROM "otherTable")
1754
1926
  * in: OtherTable.select('column'),
1755
1927
  *
1756
- * in: db.table.sql`('a', 'b')`,
1928
+ * in: sql`('a', 'b')`,
1757
1929
  * },
1758
1930
  * });
1759
1931
  * ```
@@ -1800,7 +1972,7 @@ declare class Where {
1800
1972
  * between: [1, 10],
1801
1973
  *
1802
1974
  * // sub-query and raw SQL expression
1803
- * between: [OtherTable.select('column').take(), db.table.sql`2 + 2`],
1975
+ * between: [OtherTable.select('column').take(), sql`2 + 2`],
1804
1976
  * },
1805
1977
  * });
1806
1978
  * ```
@@ -1887,15 +2059,7 @@ declare class Where {
1887
2059
  * Use a custom SQL expression in `WHERE` statement:
1888
2060
  *
1889
2061
  * ```ts
1890
- * db.table.where`a = b`;
1891
- *
1892
- * // or
1893
- * db.table.where(db.table.sql`a = b`);
1894
- *
1895
- * // or
1896
- * import { raw } from 'orchid-orm';
1897
- *
1898
- * db.table.where(raw`a = b`);
2062
+ * db.table.whereSql`a = b`;
1899
2063
  * ```
1900
2064
  *
1901
2065
  * @param args - SQL expression
@@ -1918,10 +2082,10 @@ declare class Where {
1918
2082
  */
1919
2083
  whereNot<T extends PickQueryMetaRelations>(this: T, ...args: WhereNotArgs<T>): WhereResult<T>;
1920
2084
  /**
1921
- * `whereNot` version accepting SQL expression:
2085
+ * `whereNotSql` is a version of `whereNot` accepting SQL expression:
1922
2086
  *
1923
2087
  * ```ts
1924
- * db.table.whereNot`sql expression`
2088
+ * db.table.whereNotSql`sql expression`
1925
2089
  * ```
1926
2090
  *
1927
2091
  * @param args - SQL expression
@@ -1989,7 +2153,7 @@ declare class Where {
1989
2153
  * It supports raw SQL expression:
1990
2154
  *
1991
2155
  * ```ts
1992
- * db.table.whereIn(['id', 'name'], db.table.sql`((1, 'one'), (2, 'two'))`);
2156
+ * db.table.whereIn(['id', 'name'], sql`((1, 'one'), (2, 'two'))`);
1993
2157
  * ```
1994
2158
  */
1995
2159
  whereIn<T extends PickQueryMetaRelations, Column extends WhereInColumn<T>>(this: T, ...args: [column: Column, values: WhereInValues<T, Column>] | [arg: WhereInArg<T>]): WhereResult<T>;
@@ -3144,48 +3308,6 @@ declare const resolveSubQueryCallback: (q: ToSQLQuery, cb: (q: ToSQLQuery) => To
3144
3308
  */
3145
3309
  declare const joinSubQuery: (q: ToSQLQuery, sub: ToSQLQuery) => Query;
3146
3310
 
3147
- interface AggregateOptions<T extends PickQueryMetaResultRelationsWindows> {
3148
- distinct?: boolean;
3149
- order?: OrderArg<T> | OrderArg<T>[];
3150
- filter?: WhereArg<T>;
3151
- filterOr?: WhereArg<T>[];
3152
- withinGroup?: boolean;
3153
- over?: Over<T>;
3154
- }
3155
- type Over<T extends PickQueryMetaResultWindows> = keyof T['windows'] | WindowArgDeclaration<T>;
3156
- type FnExpressionArgs<Q extends PickQueryMeta> = (SelectableOrExpression<Q> | FnExpressionArgsPairs<Q> | FnExpressionArgsValue)[];
3157
- interface FnExpressionArgsPairs<Q extends PickQueryMeta> {
3158
- pairs: {
3159
- [K: string]: SelectableOrExpression<Q>;
3160
- };
3161
- }
3162
- interface FnExpressionArgsValue {
3163
- value: unknown;
3164
- }
3165
- declare class FnExpression<Q extends Query = Query, T extends QueryColumn = QueryColumn> extends Expression<T> {
3166
- query: Q;
3167
- fn: string;
3168
- args: FnExpressionArgs<Q>;
3169
- options: AggregateOptions<Q>;
3170
- result: {
3171
- value: T;
3172
- };
3173
- q: QueryData;
3174
- /**
3175
- * @param query - query object.
3176
- * @param fn - SQL function name.
3177
- * @param args - arguments of the function.
3178
- * @param options - aggregate options.
3179
- * @param value - column type of the function result.
3180
- */
3181
- constructor(query: Q, fn: string, args: FnExpressionArgs<Q>, options: AggregateOptions<Q>, value: T);
3182
- makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
3183
- }
3184
- type ColumnExpression<C extends QueryColumn, Ops extends BaseOperators = C['operators']> = Expression<C> & {
3185
- [K in keyof Ops]: (arg: Ops[K]['_opType']) => ColumnExpression<QueryColumnBooleanOrNull>;
3186
- };
3187
- 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'];
3188
-
3189
3311
  type QueryGetSelf = PickQueryMetaTable;
3190
3312
  type GetArg<T extends QueryGetSelf> = GetStringArg<T> | Expression;
3191
3313
  type GetStringArg<T extends PickQueryMeta> = keyof T['meta']['selectable'] & string;
@@ -3232,41 +3354,6 @@ type StringColumn = QueryColumn<string, OperatorsText>;
3232
3354
  type StringNullable = QueryColumn<string | null, OperatorsText>;
3233
3355
  type NullableStringReturn<T> = SetQueryReturnsColumnOrThrow<T, StringNullable> & OperatorsText;
3234
3356
  declare class AggregateMethods {
3235
- /**
3236
- * `fn` allows to call an arbitrary SQL function.
3237
- *
3238
- * For example, calling `sqrt` function to get a square root from some numeric column:
3239
- *
3240
- * ```ts
3241
- * const q = await User.select({
3242
- * // todo: use type callback instead of generic type
3243
- * sqrt: (q) => q.fn<number>('sqrt', ['numericColumn']),
3244
- * }).take();
3245
- *
3246
- * q.sqrt; // has type `number` just as provided
3247
- * ```
3248
- *
3249
- * If this is an aggregate function, you can specify aggregation options via third parameter.
3250
- *
3251
- * Forth parameter is for runtime column type. When specified, allows to chain the function with the column operators:
3252
- *
3253
- * ```ts
3254
- * const q = await User.select({
3255
- * // chain `sqrt("numericColumn")` with the "greater than 5"
3256
- * sqrtIsGreaterThan5: (q) => q.fn('sqrt', ['numericColumn'], {}, (t) => t.float()).gt(5),
3257
- * }).take();
3258
- *
3259
- * // Return type is boolean | null
3260
- * // todo: it should be just boolean if the column is not nullable, but for now it's always nullable
3261
- * q.sqrtIsGreaterThan5
3262
- * ```
3263
- *
3264
- * @param fn
3265
- * @param args
3266
- * @param options
3267
- * @param type
3268
- */
3269
- fn<T extends PickQueryMetaResultRelationsWindowsColumnTypes, Type = unknown, C extends QueryColumn = QueryColumn<Type>>(this: T, fn: string, args: SelectableOrExpression<T>[], options?: AggregateOptions<T>, type?: (t: T['columnTypes']) => C): SetQueryReturnsColumnOrThrow<T, C> & C['operators'];
3270
3357
  /**
3271
3358
  * Use `exists()` to check if there is at least one record-matching condition.
3272
3359
  *
@@ -3513,7 +3600,7 @@ declare class AggregateMethods {
3513
3600
  * // select a column with alias
3514
3601
  * nameAlias: 'name',
3515
3602
  * // select raw SQL with alias
3516
- * foo: db.table.sql<string>`"bar" || "baz"`,
3603
+ * foo: sql<string>`"bar" || "baz"`,
3517
3604
  * },
3518
3605
  * aggregateOptions,
3519
3606
  * );
@@ -3523,7 +3610,7 @@ declare class AggregateMethods {
3523
3610
  * object: (q) =>
3524
3611
  * q.jsonObjectAgg({
3525
3612
  * nameAlias: 'name',
3526
- * foo: db.table.sql<string>`"bar" || "baz"`,
3613
+ * foo: sql<string>`"bar" || "baz"`,
3527
3614
  * }),
3528
3615
  * });
3529
3616
  * ```
@@ -3822,7 +3909,7 @@ declare class Create {
3822
3909
  *
3823
3910
  * await db.table.create({
3824
3911
  * // raw SQL
3825
- * column1: db.table.sql`'John' | 'Doe'`,
3912
+ * column1: sql`'John' || ' ' || 'Doe'`,
3826
3913
  *
3827
3914
  * // query that returns a single value
3828
3915
  * // returning multiple values will result in Postgres error
@@ -3877,7 +3964,7 @@ declare class Create {
3877
3964
  * ```ts
3878
3965
  * const oneRecord = await db.table.createRaw({
3879
3966
  * columns: ['name', 'amount'],
3880
- * values: db.table.sql`'name', random()`,
3967
+ * values: sql`'name', random()`,
3881
3968
  * });
3882
3969
  * ```
3883
3970
  *
@@ -3902,7 +3989,7 @@ declare class Create {
3902
3989
  * ```ts
3903
3990
  * const manyRecords = await db.table.createManyRaw({
3904
3991
  * columns: ['name', 'amount'],
3905
- * values: [db.table.sql`'one', 2`, db.table.sql`'three', 4`],
3992
+ * values: [sql`'one', 2`, sql`'three', 4`],
3906
3993
  * });
3907
3994
  * ```
3908
3995
  *
@@ -4048,11 +4135,11 @@ declare class Create {
4048
4135
  * // raw SQL expression:
4049
4136
  * db.table
4050
4137
  * .create(data)
4051
- * .onConfict(db.table.sql`(email) where condition`)
4138
+ * .onConfict(sql`(email) where condition`)
4052
4139
  * .merge();
4053
4140
  * ```
4054
4141
  *
4055
- * You can use the db.table.sql function in onConflict.
4142
+ * You can use the `sql` function exported from your `BaseTable` file in onConflict.
4056
4143
  * It can be useful to specify a condition when you have a partial index:
4057
4144
  *
4058
4145
  * ```ts
@@ -4063,7 +4150,7 @@ declare class Create {
4063
4150
  * active: true,
4064
4151
  * })
4065
4152
  * // ignore only when having conflicting email and when active is true.
4066
- * .onConflict(db.table.sql`(email) where active`)
4153
+ * .onConflict(sql`(email) where active`)
4067
4154
  * .ignore();
4068
4155
  * ```
4069
4156
  *
@@ -4149,7 +4236,7 @@ declare class OnConflictQueryBuilder<T extends CreateSelf, Arg extends OnConflic
4149
4236
  * db.table
4150
4237
  * .create(data)
4151
4238
  * .onConflict()
4152
- * .set(db.table.sql`raw SQL expression`);
4239
+ * .set(sql`raw SQL expression`);
4153
4240
  *
4154
4241
  * // update records only on certain conditions
4155
4242
  * db.table
@@ -4344,7 +4431,6 @@ declare class From {
4344
4431
  * ```ts
4345
4432
  * const value = 123;
4346
4433
  * db.table.fromSql`value = ${value}`;
4347
- * db.table.fromSql(db.table.sql`value = ${value}`);
4348
4434
  * ```
4349
4435
  *
4350
4436
  * @param args - SQL expression
@@ -4369,16 +4455,20 @@ declare class From {
4369
4455
 
4370
4456
  declare class QueryGet {
4371
4457
  /**
4372
- * `.get` returns a single value, it will add `LIMIT 1` to the query, and accepts a column name or a raw expression.
4373
- * It will throw `NotFoundError` when not found.
4458
+ * `.get` returns a single value, adds `LIMIT 1` to the query, and accepts a column name or a raw SQL expression.
4459
+ *
4460
+ * `get` throws a `NotFoundError` when not found, and `getOptional` returns `undefined`.
4374
4461
  *
4375
4462
  * ```ts
4376
4463
  * import { NumberColumn } from 'orchid-orm';
4464
+ * import { sql } from './baseTable';
4377
4465
  *
4378
4466
  * const firstName: string = await db.table.get('name');
4379
4467
  *
4380
- * const rawResult: number = await db.table.get(
4381
- * db.table.sql((t) => t.integer())`1 + 1`,
4468
+ * const rawResult: number = await db.table.get(sql((t) => t.integer())`1 + 1`);
4469
+ *
4470
+ * const firstNameOptional: string | undefined = await db.table.getOptional(
4471
+ * 'name',
4382
4472
  * );
4383
4473
  * ```
4384
4474
  *
@@ -4460,7 +4550,7 @@ declare class Having {
4460
4550
  * Provide SQL expression for the `HAVING` SQL statement:
4461
4551
  *
4462
4552
  * ```ts
4463
- * db.table.having`count(*) >= ${10}`;
4553
+ * db.table.havingSql`count(*) >= ${10}`;
4464
4554
  * ```
4465
4555
  *
4466
4556
  * @param args - SQL expression
@@ -4906,14 +4996,19 @@ declare class Select {
4906
4996
  * subQueryResult: Otherdb.table.select('column').take(),
4907
4997
  * });
4908
4998
  *
4909
- * // select raw SQL value, the first argument of `raw` is a column type, it is used for return type of the query
4999
+ * // select raw SQL value, specify the returning type via <generic> syntax:
4910
5000
  * db.table.select({
4911
- * raw: db.table.sql((t) => t.integer())`1 + 2`,
5001
+ * raw: sql<number>`1 + 2`,
5002
+ * });
5003
+ *
5004
+ * // select raw SQL value, the resulting type can be set by providing a column type in such way:
5005
+ * db.table.select({
5006
+ * raw: sql`1 + 2`.type((t) => t.integer()),
4912
5007
  * });
4913
5008
  *
4914
5009
  * // same raw SQL query as above, but raw value is returned from a callback
4915
5010
  * db.table.select({
4916
- * raw: (q) => q.sql((t) => t.integer())`1 + 2`,
5011
+ * raw: (q) => q.sql`1 + 2`.type((t) => t.integer()),
4917
5012
  * });
4918
5013
  * ```
4919
5014
  *
@@ -5002,7 +5097,7 @@ declare class With {
5002
5097
  * id: columnTypes.integer(),
5003
5098
  * name: columnTypes.text(3, 100),
5004
5099
  * },
5005
- * db.table.sql`SELECT id, name FROM "someTable"`,
5100
+ * sql`SELECT id, name FROM "someTable"`,
5006
5101
  * );
5007
5102
  *
5008
5103
  * // accepts query:
@@ -5010,7 +5105,7 @@ declare class With {
5010
5105
  *
5011
5106
  * // accepts a callback for a query builder:
5012
5107
  * db.table.with('alias', (qb) =>
5013
- * qb.select({ one: db.table.sql`1`.type((t) => t.integer()) }),
5108
+ * qb.select({ one: sql`1`.type((t) => t.integer()) }),
5014
5109
  * );
5015
5110
  *
5016
5111
  * // All mentioned forms can accept options as a second argument:
@@ -5056,7 +5151,7 @@ declare class Union {
5056
5151
  * SomeTable.select('id', 'name').union(
5057
5152
  * [
5058
5153
  * OtherTable.select('id', 'name'),
5059
- * SomeTable.sql`SELECT id, name FROM "thirdTable"`,
5154
+ * sql`SELECT id, name FROM "thirdTable"`,
5060
5155
  * ],
5061
5156
  * true, // optional wrap parameter
5062
5157
  * );
@@ -5197,7 +5292,7 @@ declare class Update {
5197
5292
  * column1: 123,
5198
5293
  *
5199
5294
  * // use raw SQL to update the column
5200
- * column2: db.table.sql`2 + 2`,
5295
+ * column2: sql`2 + 2`,
5201
5296
  *
5202
5297
  * // use query that returns a single value
5203
5298
  * // returning multiple values will result in Postgres error
@@ -5320,7 +5415,7 @@ declare class Update {
5320
5415
  * const updatedCount = await db.table.find(1).updateRaw`name = ${value}`;
5321
5416
  *
5322
5417
  * // or update with `sql` function:
5323
- * await db.table.find(1).updateRaw(db.table.sql`name = ${value}`);
5418
+ * await db.table.find(1).updateRaw(sql`name = ${value}`);
5324
5419
  * ```
5325
5420
  * @param args - raw SQL via a template string or by using a `sql` method
5326
5421
  */
@@ -5893,17 +5988,17 @@ declare class QueryUpsertOrCreate {
5893
5988
  orCreate<T extends UpsertThis, BT extends CreateBelongsToData<T>>(this: T, data: OrCreateArg<T, BT>): UpsertResult<T>;
5894
5989
  }
5895
5990
 
5896
- declare abstract class RawSqlMethods<ColumnTypes> {
5991
+ declare class SqlMethod<ColumnTypes> {
5897
5992
  /**
5898
- * When there is a need to use a piece of raw SQL, use the `sql` method from tables, or a `raw` function imported from `orchid-orm`.
5993
+ * When there is a need to use a piece of raw SQL, use the `sql` exported from the `BaseTable` file, it is also attached to query objects for convenience.
5899
5994
  *
5900
- * When selecting a raw SQL, specify a resulting type with `<generic>` syntax:
5995
+ * When selecting a custom SQL, specify a resulting type with `<generic>` syntax:
5901
5996
  *
5902
5997
  * ```ts
5998
+ * import { sql } from './baseTable';
5999
+ *
5903
6000
  * const result: { num: number }[] = await db.table.select({
5904
- * num: db.table.sql<number>`
5905
- * random() * 100
5906
- * `,
6001
+ * num: sql<number>`random() * 100`,
5907
6002
  * });
5908
6003
  * ```
5909
6004
  *
@@ -5912,20 +6007,10 @@ declare abstract class RawSqlMethods<ColumnTypes> {
5912
6007
  * This example assumes that the `timestamp` column was overridden with `asDate` as shown in [Override column types](/guide/columns-overview#override-column-types).
5913
6008
  *
5914
6009
  * ```ts
5915
- * const result: { timestamp: Date }[] = await db.table.select({
5916
- * timestamp: db.table.sql`now()`.type((t) => t.timestamp()),
5917
- * });
5918
- * ```
5919
- *
5920
- * Instead of `sql` method, you can use `raw` function from `orchid-orm` (or `pqb`) to do the same.
5921
- * The only difference, `raw` function don't have access to the overridden column types.
5922
- *
5923
- * ```ts
5924
- * import { raw } from 'orchid-orm';
6010
+ * import { sql } from './baseTable';
5925
6011
  *
5926
6012
  * const result: { timestamp: Date }[] = await db.table.select({
5927
- * // if you have overridden timestamp with `asDate` or `asNumber` it won't be parsed properly:
5928
- * timestamp: raw`now()`.type((t) => t.timestamp()),
6013
+ * timestamp: sql`now()`.type((t) => t.timestamp()),
5929
6014
  * });
5930
6015
  * ```
5931
6016
  *
@@ -5941,11 +6026,11 @@ declare abstract class RawSqlMethods<ColumnTypes> {
5941
6026
  * const result = await db.$from(subQuery).where({ sum: { gte: 5 } });
5942
6027
  * ```
5943
6028
  *
5944
- * `where` and other methods don't need the return type, so it can be omitted.
5945
- * You can pass SQL template directly to the `where`:
6029
+ * Many query methods have a version suffixed with `Sql`, you can pass an SQL template literal directly to these methods.
6030
+ * These methods are: `whereSql`, `whereNotSql`, `orderSql`, `havingSql`, `fromSql`, `findBySql`.
5946
6031
  *
5947
6032
  * ```ts
5948
- * await db.table.where`"someValue" = random() * 100`;
6033
+ * await db.table.whereSql`"someValue" = random() * 100`;
5949
6034
  * ```
5950
6035
  *
5951
6036
  * Interpolating values in template literals is completely safe:
@@ -5955,48 +6040,48 @@ declare abstract class RawSqlMethods<ColumnTypes> {
5955
6040
  * const { value } = req.params;
5956
6041
  *
5957
6042
  * // SQL injection is prevented by a library, this is safe:
5958
- * await db.table.where`column = ${value}`;
6043
+ * await db.table.whereSql`column = ${value}`;
5959
6044
  * ```
5960
6045
  *
5961
6046
  * In the example above, TS cannot check if the table has `column` column, or if there are joined tables that have such column which will lead to error.
5962
- * Instead, use the `column` method to reference a column:
6047
+ * Instead, use the [column](/guide/sql-expressions#column) or [ref](/guide/sql-expressions#ref) to reference a column:
5963
6048
  *
5964
6049
  * ```ts
5965
- * import { raw } from 'orchid-orm';
5966
- *
5967
6050
  * // ids will be prefixed with proper table names, no ambiguity:
5968
6051
  * db.table.join(db.otherTable, 'id', 'otherId').where`
5969
6052
  * ${db.table.column('id')} = 1 AND
5970
- * ${db.otherTable.column('id')} = 2
6053
+ * ${db.otherTable.ref('id')} = 2
5971
6054
  * `;
5972
6055
  * ```
5973
6056
  *
5974
6057
  * SQL can be passed with a simple string, it's important to note that this is not safe to interpolate values in it.
5975
6058
  *
5976
6059
  * ```ts
5977
- * import { raw } from 'orchid-orm';
6060
+ * import { sql } from './baseTable';
5978
6061
  *
5979
6062
  * // no interpolation is okay
5980
- * await db.table.where(raw({ raw: 'column = random() * 100' }));
6063
+ * await db.table.where(sql({ raw: 'column = random() * 100' }));
5981
6064
  *
5982
6065
  * // get value from user-provided params
5983
6066
  * const { value } = req.params;
5984
6067
  *
5985
6068
  * // this is NOT safe, SQL injection is possible:
5986
- * await db.table.where(raw({ raw: `column = random() * ${value}` }));
6069
+ * await db.table.where(sql({ raw: `column = random() * ${value}` }));
5987
6070
  * ```
5988
6071
  *
5989
- * To inject values into `raw` SQL strings, denote it with `$` in the string and provide `values` object.
6072
+ * To inject values into `sql({ raw: '...' })` SQL strings, denote it with `$` in the string and provide `values` object.
5990
6073
  *
5991
- * Use `$$` to provide column or/and table name (`column` method is more preferable). Column names will be quoted so don't quote them manually.
6074
+ * Use `$$` to provide column or/and table name (`column` or `ref` are preferable). Column names will be quoted so don't quote them manually.
5992
6075
  *
5993
6076
  * ```ts
6077
+ * import { sql } from './baseTable';
6078
+ *
5994
6079
  * // get value from user-provided params
5995
6080
  * const { value } = req.params;
5996
6081
  *
5997
6082
  * // this is SAFE, SQL injection are prevented:
5998
6083
  * await db.table.where(
5999
- * db.table.sql({
6084
+ * sql<boolean>({
6000
6085
  * raw: '$$column = random() * $value',
6001
6086
  * values: {
6002
6087
  * column: 'someTable.someColumn', // or simply 'column'
@@ -6010,45 +6095,41 @@ declare abstract class RawSqlMethods<ColumnTypes> {
6010
6095
  * Summarizing:
6011
6096
  *
6012
6097
  * ```ts
6098
+ * import { sql } from './baseTable';
6099
+ *
6013
6100
  * // simplest form:
6014
- * db.table.sql`key = ${value}`;
6101
+ * sql`key = ${value}`;
6015
6102
  *
6016
6103
  * // with resulting type:
6017
- * db.table.sql<boolean>`key = ${value}`;
6104
+ * sql<boolean>`key = ${value}`;
6018
6105
  *
6019
6106
  * // with column type for select:
6020
- * db.table.sql`key = ${value}`.type((t) => t.boolean());
6107
+ * sql`key = ${value}`.type((t) => t.boolean());
6021
6108
  *
6022
6109
  * // with column name via `column` method:
6023
- * db.table.sql`${db.table.column('column')} = ${value}`;
6110
+ * sql`${db.table.column('column')} = ${value}`;
6024
6111
  *
6025
6112
  * // raw SQL string, not allowed to interpolate values:
6026
- * db.table.sql({ raw: 'random()' });
6113
+ * sql({ raw: 'random()' });
6027
6114
  *
6028
6115
  * // with resulting type and `raw` string:
6029
- * db.table.sql<number>({ raw: 'random()' });
6116
+ * sql<number>({ raw: 'random()' });
6030
6117
  *
6031
6118
  * // with column name and a value in a `raw` string:
6032
- * db.table.sql({
6119
+ * sql({
6033
6120
  * raw: `$$column = $value`,
6034
6121
  * values: { column: 'columnName', value: 123 },
6035
6122
  * });
6036
6123
  *
6037
6124
  * // combine template literal, column type, and values:
6038
- * db.table.sql`($one + $two) / $one`
6039
- * .type((t) => t.numeric())
6040
- * .values({ one: 1, two: 2 });
6125
+ * sql`($one + $two) / $one`.type((t) => t.numeric()).values({ one: 1, two: 2 });
6041
6126
  * ```
6042
6127
  *
6043
6128
  * @param args - template literal or an object { raw: string }
6044
6129
  * @return object that has `type` and `values` methods
6045
6130
  */
6046
- sql<T = unknown>(this: {
6047
- columnTypes: ColumnTypes;
6048
- }, ...args: StaticSQLArgs): RawSQL<QueryColumn<T>, ColumnTypes>;
6049
- sql<T = unknown>(this: {
6050
- columnTypes: ColumnTypes;
6051
- }, ...args: [DynamicSQLArg]): DynamicRawSQL<QueryColumn<T>, ColumnTypes>;
6131
+ sql<T = unknown>(this: PickQueryColumnTypes, ...args: StaticSQLArgs): RawSQL<QueryColumn<T>, ColumnTypes>;
6132
+ sql<T = unknown>(this: PickQueryColumnTypes, ...args: [DynamicSQLArg]): DynamicRawSQL<QueryColumn<T>, ColumnTypes>;
6052
6133
  }
6053
6134
 
6054
6135
  type QueryTransformFn<T extends Query> = (input: T['then'] extends QueryThen<infer Data> ? Data : never) => unknown;
@@ -6155,24 +6236,6 @@ type NarrowTypeResult<T extends PickQueryMetaResultReturnType, Narrow> = {
6155
6236
  [P in keyof T['result'][K]]: P extends 'outputType' ? Narrow[K] extends T['result'][K]['outputType'] ? Narrow[K] : `narrowType() error: passed type does not exist in '${K & string}'s type union` : T['result'][K][P];
6156
6237
  } : T['result'][K];
6157
6238
  };
6158
- declare class ColumnRefExpression<T extends QueryColumn> extends Expression<T> {
6159
- name: string;
6160
- result: {
6161
- value: T;
6162
- };
6163
- q: ExpressionData;
6164
- constructor(value: T, name: string);
6165
- makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
6166
- }
6167
- declare class RefExpression<T extends QueryColumn> extends Expression<T> {
6168
- q: QueryData;
6169
- ref: string;
6170
- result: {
6171
- value: T;
6172
- };
6173
- constructor(value: T, q: QueryData, ref: string);
6174
- makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
6175
- }
6176
6239
  type WrapQueryArg = FromQuerySelf;
6177
6240
  declare const _queryAll: <T extends Query>(q: T) => SetQueryReturnsAll<T>;
6178
6241
  declare const _queryTake: <T extends PickQueryResult>(q: T) => SetQueryReturnsOne<T>;
@@ -6181,7 +6244,7 @@ declare const _queryExec: <T extends Query>(q: T) => never;
6181
6244
  declare const _queryFindBy: <T extends QueryBase<EmptyObject>>(q: T, args: WhereArg<T>[]) => SetQueryReturnsOne<WhereResult<T>>;
6182
6245
  declare const _queryFindByOptional: <T extends QueryBase<EmptyObject>>(q: T, args: WhereArg<T>[]) => SetQueryReturnsOneOptional<WhereResult<T>>;
6183
6246
  declare const _queryRows: <T extends Query>(q: T) => SetQueryReturnsRows<T>;
6184
- interface QueryMethods<ColumnTypes> extends AsMethods, AggregateMethods, Select, From, Join, With, Union, JsonModifiers, JsonMethods, Create, Update, Delete, Transaction, For, Where, SearchMethods, Clear, Having, QueryLog, QueryHooks, QueryUpsertOrCreate, QueryGet, MergeQueryMethods, RawSqlMethods<ColumnTypes>, TransformMethods, ScopeMethods, SoftDeleteMethods {
6247
+ interface QueryMethods<ColumnTypes> extends AsMethods, AggregateMethods, Select, From, Join, With, Union, JsonModifiers, JsonMethods, Create, Update, Delete, Transaction, For, Where, SearchMethods, Clear, Having, QueryLog, QueryHooks, QueryUpsertOrCreate, QueryGet, MergeQueryMethods, SqlMethod<ColumnTypes>, TransformMethods, ScopeMethods, SoftDeleteMethods, ExpressionMethods {
6185
6248
  }
6186
6249
  declare class QueryMethods<ColumnTypes> {
6187
6250
  /**
@@ -6282,11 +6345,13 @@ declare class QueryMethods<ColumnTypes> {
6282
6345
  * db.table.distinct().select('name');
6283
6346
  * ```
6284
6347
  *
6285
- * Can accept column names or raw expressions to place it to `DISTINCT ON (...)`:
6348
+ * Can accept column names or raw SQL expressions to place it to `DISTINCT ON (...)`:
6286
6349
  *
6287
6350
  * ```ts
6351
+ * import { sql } from './baseTable';
6352
+ *
6288
6353
  * // Distinct on the name and raw SQL
6289
- * db.table.distinct('name', db.table.sql`raw sql`).select('id', 'name');
6354
+ * db.table.distinct('name', sql`raw sql`).select('id', 'name');
6290
6355
  * ```
6291
6356
  *
6292
6357
  * @param columns - column names or a raw SQL
@@ -6404,9 +6469,11 @@ declare class QueryMethods<ColumnTypes> {
6404
6469
  * Also, it's possible to group by a selected value:
6405
6470
  *
6406
6471
  * ```ts
6472
+ * import { sql } from './baseTable';
6473
+ *
6407
6474
  * const results = db.product
6408
6475
  * .select({
6409
- * month: db.product.sql`extract(month from "createdAt")`.type((t) =>
6476
+ * month: sql`extract(month from "createdAt")`.type((t) =>
6410
6477
  * // month is returned as string, parse it to int
6411
6478
  * t.string().parse(parseInt),
6412
6479
  * ),
@@ -6490,8 +6557,6 @@ declare class QueryMethods<ColumnTypes> {
6490
6557
  *
6491
6558
  * ```ts
6492
6559
  * db.table.orderSql`raw sql`;
6493
- * // or
6494
- * db.table.orderSql(db.table.sql`raw sql`);
6495
6560
  * ```
6496
6561
  *
6497
6562
  * @param args - SQL expression
@@ -6653,50 +6718,6 @@ declare class QueryMethods<ColumnTypes> {
6653
6718
  * @param fn - helper function
6654
6719
  */
6655
6720
  makeHelper<T extends PickQueryMetaShape, Args extends unknown[], Result>(this: T, fn: (q: T, ...args: Args) => Result): QueryHelper<T, Args, Result>;
6656
- /**
6657
- * `column` references a table column, this can be used in raw SQL or when building a column expression.
6658
- * Only for referencing a column in the query's table. For referencing joined table's columns, see [ref](#ref).
6659
- *
6660
- * ```ts
6661
- * await db.table.select({
6662
- * // select `("table"."id" = 1 OR "table"."name" = 'name') AS "one"`,
6663
- * // returns a boolean
6664
- * one: (q) =>
6665
- * q.sql<boolean>`${q.column('id')} = ${1} OR ${q.column('name')} = ${'name'}`,
6666
- *
6667
- * // selects the same as above, but by building a query
6668
- * two: (q) => q.column('id').equals(1).or(q.column('name').equals('name')),
6669
- * });
6670
- * ```
6671
- *
6672
- * @param name - column name
6673
- */
6674
- column<T extends PickQueryShape, K extends keyof T['shape']>(this: T, name: K): ColumnRefExpression<T['shape'][K]> & T['shape'][K]['operators'];
6675
- /**
6676
- * `ref` is similar to [column](#column), but it also allows to reference a column of joined table,
6677
- * and other dynamically defined columns.
6678
- *
6679
- * ```ts
6680
- * await db.table.join('otherTable').select({
6681
- * // select `("otherTable"."id" = 1 OR "otherTable"."name" = 'name') AS "one"`,
6682
- * // returns a boolean
6683
- * one: (q) =>
6684
- * q.sql<boolean>`${q.ref('otherTable.id')} = ${1} OR ${q.ref(
6685
- * 'otherTable.name',
6686
- * )} = ${'name'}`,
6687
- *
6688
- * // selects the same as above, but by building a query
6689
- * two: (q) =>
6690
- * q
6691
- * .ref('otherTable.id')
6692
- * .equals(1)
6693
- * .or(q.ref('otherTable.name').equals('name')),
6694
- * });
6695
- * ```
6696
- *
6697
- * @param arg - any available column name, such as of a joined table
6698
- */
6699
- ref<T extends PickQueryMeta, K extends keyof T['meta']['selectable'] & string>(this: T, arg: K): RefExpression<T['meta']['selectable'][K]['column']> & T['meta']['selectable'][K]['column']['operators'];
6700
6721
  /**
6701
6722
  * Narrows a part of the query output type.
6702
6723
  * Use with caution, type-safety isn't guaranteed with it.
@@ -6823,9 +6844,11 @@ interface PickQueryMetaResultRelations extends PickQueryResult, PickQueryMeta, P
6823
6844
  }
6824
6845
  interface PickQueryMetaResultRelationsWindows extends PickQueryMetaResultRelations, PickQueryWindows {
6825
6846
  }
6826
- interface PickQueryMetaResultRelationsWindowsColumnTypes extends PickQueryMetaResultRelationsWindows {
6847
+ interface PickQueryColumnTypes {
6827
6848
  columnTypes: unknown;
6828
6849
  }
6850
+ interface PickQueryMetaResultRelationsWindowsColumnTypes extends PickQueryMetaResultRelationsWindows, PickQueryColumnTypes {
6851
+ }
6829
6852
  interface PickQueryMetaTable extends PickQueryMeta, PickQueryTable {
6830
6853
  }
6831
6854
  interface PickQueryMetaTableShape extends PickQueryMetaTable, PickQueryShape {
@@ -7008,6 +7031,12 @@ type SetQueryWith<T, WithData> = {
7008
7031
  type AddQueryWith<T extends PickQueryWithData, With extends WithDataItem> = SetQueryWith<T, {
7009
7032
  [K in keyof T['withData'] | With['table']]: K extends With['table'] ? With : K extends keyof T['withData'] ? T['withData'][K] : never;
7010
7033
  }>;
7034
+ interface QueryOrExpression<T> {
7035
+ result: {
7036
+ value: QueryColumn<T>;
7037
+ };
7038
+ }
7039
+ type QueryOrExpressionBooleanOrNullResult = QueryOrExpression<boolean | null>;
7011
7040
 
7012
7041
  interface ColumnData extends ColumnDataBase {
7013
7042
  maxChars?: number;
@@ -7670,4 +7699,4 @@ type CopyResult<T extends PickQueryMeta> = SetQueryKind<T, 'copy'>;
7670
7699
  */
7671
7700
  declare function copyTableData<T extends PickQueryMetaShape>(query: T, arg: CopyArg<T>): CopyResult<T>;
7672
7701
 
7673
- export { Adapter, AdapterConfig, AdapterOptions, AddQueryDefaults, AddQuerySelect, AddQueryWith, 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, ExpressionOutput, FnExpression, FnExpressionArgs, FnExpressionArgsPairs, FnExpressionArgsValue, For, From, FromArg, 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, OrchidOrmError, OrchidOrmInternalError, OrderArg, OrderArgSelf, OrderArgs, OrderItem, OrderTsQueryConfig, Over, PathColumn, PickColumnData, PickQueryBaseQuery, PickQueryDataShapeAndJoinedShapes, PickQueryInternal, PickQueryMetaRelations, PickQueryMetaResultRelations, PickQueryMetaResultRelationsWindows, PickQueryMetaResultRelationsWindowsColumnTypes, PickQueryMetaResultRelationsWithDataReturnType, PickQueryMetaResultRelationsWithDataReturnTypeShape, PickQueryMetaResultReturnTypeWithDataWindows, PickQueryMetaResultReturnTypeWithDataWindowsTable, PickQueryMetaShapeRelationsWithData, PickQueryMetaTable, PickQueryMetaTableShape, PickQueryMetaTableShapeReturnTypeWithData, PickQueryMetaWithData, PickQueryQ, PickQueryQAndBaseQuery, PickQueryQAndInternal, PickQueryRelations, PickQueryRelationsWithData, PickQueryShapeResultSinglePrimaryKey, PickQueryShapeSinglePrimaryKey, PickQuerySinglePrimaryKey, PickQueryWindows, PickQueryWithData, 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, QueryResult, QueryReturnsAll, QueryScopeData, QueryScopes, QuerySourceItem, QueryTransform, QueryTransformFn, QueryUpsertOrCreate, QueryWithComputed, QueryWithTable, RawSQL, RawSqlMethods, 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, SetQueryWith, ShapeColumnPrimaryKeys, ShapeUniqueColumns, SimpleJoinItem, SimpleJoinItemNonSubQueryArgs, SmallIntColumn, SmallSerialColumn, SortDir, SqlFn, 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, 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, With, WithDataBase, WithDataItem, WithDataItems, WithItem, WithOptions, 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, _queryUpdate, _queryUpdateOrThrow, _queryUpdateRaw, _queryWhere, _queryWhereExists, _queryWhereIn, _queryWhereNot, _queryWhereNotSql, _queryWhereSql, addComputedColumns, addParserForRawExpression, addParserForSelectItem, addQueryOn, anyShape, checkIfASimpleQuery, cloneQuery, cloneQueryBaseUnscoped, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnsShapeToCode, constraintInnerToCode, constraintToCode, copyTableData, countSelect, createDb, defaultSchemaConfig, extendQuery, foreignKeyArgumentToCode, getClonedQueryData, getColumnInfo, getColumnTypes, getPrimaryKeys, getQueryAs, getShapeFromSelect, 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, saveSearchAlias, setParserForSelectedString, setQueryObjectValue, setQueryOperators, simplifyColumnDefault, sqlFn, sqlQueryArgsToExpression, tableDataMethods, templateLiteralToSQL, testTransaction, throwIfNoWhere, toSQL, toSQLCacheKey };
7702
+ export { Adapter, AdapterConfig, AdapterOptions, AddQueryDefaults, AddQuerySelect, AddQueryWith, 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, From, FromArg, 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, PickQueryQ, PickQueryQAndBaseQuery, PickQueryQAndInternal, PickQueryRelations, PickQueryRelationsWithData, PickQueryShapeResultSinglePrimaryKey, PickQueryShapeSinglePrimaryKey, PickQuerySinglePrimaryKey, PickQueryWindows, PickQueryWithData, 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, SetQueryWith, 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, 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, With, WithDataBase, WithDataItem, WithDataItems, WithItem, WithOptions, 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, _queryUpdate, _queryUpdateOrThrow, _queryUpdateRaw, _queryWhere, _queryWhereExists, _queryWhereIn, _queryWhereNot, _queryWhereNotSql, _queryWhereSql, addComputedColumns, addParserForRawExpression, addParserForSelectItem, addQueryOn, anyShape, checkIfASimpleQuery, cloneQuery, cloneQueryBaseUnscoped, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnsShapeToCode, constraintInnerToCode, constraintToCode, copyTableData, countSelect, createDb, defaultSchemaConfig, extendQuery, foreignKeyArgumentToCode, getClonedQueryData, getColumnInfo, getColumnTypes, getPrimaryKeys, getQueryAs, getShapeFromSelect, 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, saveSearchAlias, setParserForSelectedString, setQueryObjectValue, setQueryOperators, simplifyColumnDefault, sqlFn, sqlQueryArgsToExpression, tableDataMethods, templateLiteralToSQL, testTransaction, throwIfNoWhere, toSQL, toSQLCacheKey };