pqb 0.30.3 → 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 +189 -163
- package/dist/index.js +59 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +59 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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,
|
|
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';
|
|
@@ -1427,12 +1427,184 @@ declare class OnMethods {
|
|
|
1427
1427
|
onJsonPathEquals<T extends PickQueryMeta>(this: T, ...args: OnJsonPathEqualsArgs<T['meta']['selectable']>): T;
|
|
1428
1428
|
}
|
|
1429
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
|
+
|
|
1430
1602
|
type WhereArg<T extends PickQueryMetaRelations> = {
|
|
1431
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<{
|
|
1432
1604
|
columns: (keyof T['meta']['selectable'])[];
|
|
1433
1605
|
values: unknown[][] | QueryBase | Expression;
|
|
1434
|
-
}> : T['meta']['selectable'][K]['column']['queryType'] | null | ColumnOperators<T['meta']['selectable'], K> |
|
|
1435
|
-
} |
|
|
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>);
|
|
1436
1608
|
/**
|
|
1437
1609
|
* Callback argument of `where`.
|
|
1438
1610
|
* It has `where` methods (`where`, `whereNot`, `whereExists`, etc.),
|
|
@@ -1442,9 +1614,9 @@ type WhereArg<T extends PickQueryMetaRelations> = {
|
|
|
1442
1614
|
* ```
|
|
1443
1615
|
*/
|
|
1444
1616
|
type WhereQueryBuilder<T extends PickQueryRelations> = RelationsBase extends T['relations'] ? {
|
|
1445
|
-
[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;
|
|
1446
1618
|
} : {
|
|
1447
|
-
[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;
|
|
1448
1620
|
};
|
|
1449
1621
|
type WhereArgs<T extends PickQueryMetaRelations> = WhereArg<T>[];
|
|
1450
1622
|
type WhereNotArgs<T extends PickQueryMetaRelations> = [WhereArg<T>];
|
|
@@ -1518,6 +1690,11 @@ declare class Where {
|
|
|
1518
1690
|
* // where column equals to raw SQL
|
|
1519
1691
|
* // import `sql` from your `BaseTable`
|
|
1520
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'),
|
|
1521
1698
|
* });
|
|
1522
1699
|
* ```
|
|
1523
1700
|
*
|
|
@@ -3131,48 +3308,6 @@ declare const resolveSubQueryCallback: (q: ToSQLQuery, cb: (q: ToSQLQuery) => To
|
|
|
3131
3308
|
*/
|
|
3132
3309
|
declare const joinSubQuery: (q: ToSQLQuery, sub: ToSQLQuery) => Query;
|
|
3133
3310
|
|
|
3134
|
-
interface AggregateOptions<T extends PickQueryMetaResultRelationsWindows> {
|
|
3135
|
-
distinct?: boolean;
|
|
3136
|
-
order?: OrderArg<T> | OrderArg<T>[];
|
|
3137
|
-
filter?: WhereArg<T>;
|
|
3138
|
-
filterOr?: WhereArg<T>[];
|
|
3139
|
-
withinGroup?: boolean;
|
|
3140
|
-
over?: Over<T>;
|
|
3141
|
-
}
|
|
3142
|
-
type Over<T extends PickQueryMetaResultWindows> = keyof T['windows'] | WindowArgDeclaration<T>;
|
|
3143
|
-
type FnExpressionArgs<Q extends PickQueryMeta> = (SelectableOrExpression<Q> | FnExpressionArgsPairs<Q> | FnExpressionArgsValue)[];
|
|
3144
|
-
interface FnExpressionArgsPairs<Q extends PickQueryMeta> {
|
|
3145
|
-
pairs: {
|
|
3146
|
-
[K: string]: SelectableOrExpression<Q>;
|
|
3147
|
-
};
|
|
3148
|
-
}
|
|
3149
|
-
interface FnExpressionArgsValue {
|
|
3150
|
-
value: unknown;
|
|
3151
|
-
}
|
|
3152
|
-
declare class FnExpression<Q extends Query = Query, T extends QueryColumn = QueryColumn> extends Expression<T> {
|
|
3153
|
-
query: Q;
|
|
3154
|
-
fn: string;
|
|
3155
|
-
args: FnExpressionArgs<Q>;
|
|
3156
|
-
options: AggregateOptions<Q>;
|
|
3157
|
-
result: {
|
|
3158
|
-
value: T;
|
|
3159
|
-
};
|
|
3160
|
-
q: QueryData;
|
|
3161
|
-
/**
|
|
3162
|
-
* @param query - query object.
|
|
3163
|
-
* @param fn - SQL function name.
|
|
3164
|
-
* @param args - arguments of the function.
|
|
3165
|
-
* @param options - aggregate options.
|
|
3166
|
-
* @param value - column type of the function result.
|
|
3167
|
-
*/
|
|
3168
|
-
constructor(query: Q, fn: string, args: FnExpressionArgs<Q>, options: AggregateOptions<Q>, value: T);
|
|
3169
|
-
makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
|
|
3170
|
-
}
|
|
3171
|
-
type ColumnExpression<C extends QueryColumn, Ops extends BaseOperators = C['operators']> = Expression<C> & {
|
|
3172
|
-
[K in keyof Ops]: (arg: Ops[K]['_opType']) => ColumnExpression<QueryColumnBooleanOrNull>;
|
|
3173
|
-
};
|
|
3174
|
-
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'];
|
|
3175
|
-
|
|
3176
3311
|
type QueryGetSelf = PickQueryMetaTable;
|
|
3177
3312
|
type GetArg<T extends QueryGetSelf> = GetStringArg<T> | Expression;
|
|
3178
3313
|
type GetStringArg<T extends PickQueryMeta> = keyof T['meta']['selectable'] & string;
|
|
@@ -6058,121 +6193,6 @@ declare class TransformMethods {
|
|
|
6058
6193
|
transform<T extends Query, Fn extends QueryTransformFn<T>>(this: T, fn: Fn): QueryTransform<T, ReturnType<Fn>>;
|
|
6059
6194
|
}
|
|
6060
6195
|
|
|
6061
|
-
declare class ColumnRefExpression<T extends QueryColumn> extends Expression<T> {
|
|
6062
|
-
name: string;
|
|
6063
|
-
result: {
|
|
6064
|
-
value: T;
|
|
6065
|
-
};
|
|
6066
|
-
q: ExpressionData;
|
|
6067
|
-
constructor(value: T, name: string);
|
|
6068
|
-
makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
|
|
6069
|
-
}
|
|
6070
|
-
declare class RefExpression<T extends QueryColumn> extends Expression<T> {
|
|
6071
|
-
q: QueryData;
|
|
6072
|
-
ref: string;
|
|
6073
|
-
result: {
|
|
6074
|
-
value: T;
|
|
6075
|
-
};
|
|
6076
|
-
constructor(value: T, q: QueryData, ref: string);
|
|
6077
|
-
makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
|
|
6078
|
-
}
|
|
6079
|
-
interface QueryReturnsFnAdd<T extends PickQueryColumnTypes> extends QueryMetaHasSelect {
|
|
6080
|
-
type<C extends QueryColumn>(fn: (types: T['columnTypes']) => C): {
|
|
6081
|
-
[K in keyof T]: K extends 'result' ? {
|
|
6082
|
-
value: C;
|
|
6083
|
-
} : K extends 'returnType' ? 'valueOrThrow' : K extends 'then' ? QueryThen<C['outputType']> : T[K];
|
|
6084
|
-
} & C['operators'];
|
|
6085
|
-
}
|
|
6086
|
-
type SetQueryReturnsFn<T extends PickQueryColumnTypes, C extends PickOutputType> = {
|
|
6087
|
-
[K in keyof T]: K extends 'result' ? {
|
|
6088
|
-
value: C;
|
|
6089
|
-
} : K extends 'returnType' ? 'valueOrThrow' : K extends 'then' ? QueryThen<C['outputType']> : T[K];
|
|
6090
|
-
} & QueryReturnsFnAdd<T>;
|
|
6091
|
-
declare class ExpressionMethods {
|
|
6092
|
-
/**
|
|
6093
|
-
* `column` references a table column, this can be used in raw SQL or when building a column expression.
|
|
6094
|
-
* Only for referencing a column in the query's table. For referencing joined table's columns, see [ref](#ref).
|
|
6095
|
-
*
|
|
6096
|
-
* ```ts
|
|
6097
|
-
* await db.table.select({
|
|
6098
|
-
* // select `("table"."id" = 1 OR "table"."name" = 'name') AS "one"`,
|
|
6099
|
-
* // returns a boolean
|
|
6100
|
-
* one: (q) =>
|
|
6101
|
-
* q.sql<boolean>`${q.column('id')} = ${1} OR ${q.column('name')} = ${'name'}`,
|
|
6102
|
-
*
|
|
6103
|
-
* // selects the same as above, but by building a query
|
|
6104
|
-
* two: (q) => q.column('id').equals(1).or(q.column('name').equals('name')),
|
|
6105
|
-
* });
|
|
6106
|
-
* ```
|
|
6107
|
-
*
|
|
6108
|
-
* @param name - column name
|
|
6109
|
-
*/
|
|
6110
|
-
column<T extends PickQueryShape, K extends keyof T['shape']>(this: T, name: K): ColumnRefExpression<T['shape'][K]> & T['shape'][K]['operators'];
|
|
6111
|
-
/**
|
|
6112
|
-
* `ref` is similar to [column](#column), but it also allows to reference a column of joined table,
|
|
6113
|
-
* and other dynamically defined columns.
|
|
6114
|
-
*
|
|
6115
|
-
* ```ts
|
|
6116
|
-
* await db.table.join('otherTable').select({
|
|
6117
|
-
* // select `("otherTable"."id" = 1 OR "otherTable"."name" = 'name') AS "one"`,
|
|
6118
|
-
* // returns a boolean
|
|
6119
|
-
* one: (q) =>
|
|
6120
|
-
* q.sql<boolean>`${q.ref('otherTable.id')} = ${1} OR ${q.ref(
|
|
6121
|
-
* 'otherTable.name',
|
|
6122
|
-
* )} = ${'name'}`,
|
|
6123
|
-
*
|
|
6124
|
-
* // selects the same as above, but by building a query
|
|
6125
|
-
* two: (q) =>
|
|
6126
|
-
* q
|
|
6127
|
-
* .ref('otherTable.id')
|
|
6128
|
-
* .equals(1)
|
|
6129
|
-
* .or(q.ref('otherTable.name').equals('name')),
|
|
6130
|
-
* });
|
|
6131
|
-
* ```
|
|
6132
|
-
*
|
|
6133
|
-
* @param arg - any available column name, such as of a joined table
|
|
6134
|
-
*/
|
|
6135
|
-
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'];
|
|
6136
|
-
val(value: unknown): ValExpression;
|
|
6137
|
-
/**
|
|
6138
|
-
* `fn` allows to call an arbitrary SQL function.
|
|
6139
|
-
*
|
|
6140
|
-
* For example, calling `sqrt` function to get a square root from some numeric column:
|
|
6141
|
-
*
|
|
6142
|
-
* ```ts
|
|
6143
|
-
* const q = await User.select({
|
|
6144
|
-
* sqrt: (q) => q.fn<number>('sqrt', ['numericColumn']),
|
|
6145
|
-
* }).take();
|
|
6146
|
-
*
|
|
6147
|
-
* q.sqrt; // has type `number` just as provided
|
|
6148
|
-
* ```
|
|
6149
|
-
*
|
|
6150
|
-
* If this is an aggregate function, you can specify aggregation options (see [Aggregate](/guide/aggregate.html)) via third parameter.
|
|
6151
|
-
*
|
|
6152
|
-
* Use `type` method to specify a column type so that its operators such as `lt` and `gt` become available:
|
|
6153
|
-
*
|
|
6154
|
-
* ```ts
|
|
6155
|
-
* const q = await User.select({
|
|
6156
|
-
* // Produces `sqrt("numericColumn") > 5`
|
|
6157
|
-
* sqrtIsGreaterThan5: (q) =>
|
|
6158
|
-
* q
|
|
6159
|
-
* .fn('sqrt', ['numericColumn'])
|
|
6160
|
-
* .type((t) => t.float())
|
|
6161
|
-
* .gt(5),
|
|
6162
|
-
* }).take();
|
|
6163
|
-
*
|
|
6164
|
-
* // Return type is boolean | null
|
|
6165
|
-
* // todo: it should be just boolean if the column is not nullable, but for now it's always nullable
|
|
6166
|
-
* q.sqrtIsGreaterThan5;
|
|
6167
|
-
* ```
|
|
6168
|
-
*
|
|
6169
|
-
* @param fn
|
|
6170
|
-
* @param args
|
|
6171
|
-
* @param options
|
|
6172
|
-
*/
|
|
6173
|
-
fn<T extends PickQueryMetaResultRelationsWindowsColumnTypes, Type = unknown, C extends QueryColumn = QueryColumn<Type>>(this: T, fn: string, args: SelectableOrExpression<T>[], options?: AggregateOptions<T>): SetQueryReturnsFn<T, C>;
|
|
6174
|
-
}
|
|
6175
|
-
|
|
6176
6196
|
interface WindowArg<T extends OrderArgSelf> {
|
|
6177
6197
|
[K: string]: WindowArgDeclaration<T> | Expression;
|
|
6178
6198
|
}
|
|
@@ -7011,6 +7031,12 @@ type SetQueryWith<T, WithData> = {
|
|
|
7011
7031
|
type AddQueryWith<T extends PickQueryWithData, With extends WithDataItem> = SetQueryWith<T, {
|
|
7012
7032
|
[K in keyof T['withData'] | With['table']]: K extends With['table'] ? With : K extends keyof T['withData'] ? T['withData'][K] : never;
|
|
7013
7033
|
}>;
|
|
7034
|
+
interface QueryOrExpression<T> {
|
|
7035
|
+
result: {
|
|
7036
|
+
value: QueryColumn<T>;
|
|
7037
|
+
};
|
|
7038
|
+
}
|
|
7039
|
+
type QueryOrExpressionBooleanOrNullResult = QueryOrExpression<boolean | null>;
|
|
7014
7040
|
|
|
7015
7041
|
interface ColumnData extends ColumnDataBase {
|
|
7016
7042
|
maxChars?: number;
|
|
@@ -7673,4 +7699,4 @@ type CopyResult<T extends PickQueryMeta> = SetQueryKind<T, 'copy'>;
|
|
|
7673
7699
|
*/
|
|
7674
7700
|
declare function copyTableData<T extends PickQueryMetaShape>(query: T, arg: CopyArg<T>): CopyResult<T>;
|
|
7675
7701
|
|
|
7676
|
-
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, 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, 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 };
|
|
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 };
|
package/dist/index.js
CHANGED
|
@@ -2024,13 +2024,23 @@ const processWhere = (ands, ctx, table, query, data, quotedAs) => {
|
|
|
2024
2024
|
qb.q.and = qb.q.or = void 0;
|
|
2025
2025
|
qb.q.isSubQuery = true;
|
|
2026
2026
|
const res = resolveSubQueryCallback(qb, data);
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
const q = joinSubQuery(table, res);
|
|
2030
|
-
q.q.select = [expr];
|
|
2031
|
-
ands.push(`(${makeSQL(q, ctx).text})`);
|
|
2027
|
+
if (orchidCore.isExpression(res)) {
|
|
2028
|
+
ands.push(`(${res.toSQL(ctx, quotedAs)})`);
|
|
2032
2029
|
} else {
|
|
2033
|
-
|
|
2030
|
+
if (res.q.expr) {
|
|
2031
|
+
const q = joinSubQuery(table, res);
|
|
2032
|
+
q.q.select = [res.q.expr];
|
|
2033
|
+
ands.push(`(${makeSQL(q, ctx).text})`);
|
|
2034
|
+
} else {
|
|
2035
|
+
pushWhereToSql(
|
|
2036
|
+
ands,
|
|
2037
|
+
ctx,
|
|
2038
|
+
res,
|
|
2039
|
+
res.q,
|
|
2040
|
+
quotedAs,
|
|
2041
|
+
true
|
|
2042
|
+
);
|
|
2043
|
+
}
|
|
2034
2044
|
}
|
|
2035
2045
|
return;
|
|
2036
2046
|
}
|
|
@@ -2208,9 +2218,15 @@ const processWhere = (ands, ctx, table, query, data, quotedAs) => {
|
|
|
2208
2218
|
}
|
|
2209
2219
|
}
|
|
2210
2220
|
} else {
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2221
|
+
const column = columnToSql(ctx, query, query.shape, key, quotedAs);
|
|
2222
|
+
if (typeof value === "function") {
|
|
2223
|
+
const expr = value(table);
|
|
2224
|
+
ands.push(`${column} = ${expr.toSQL(ctx, quotedAs)}`);
|
|
2225
|
+
} else {
|
|
2226
|
+
ands.push(
|
|
2227
|
+
`${column} ${value === null ? "IS NULL" : `= ${orchidCore.addValue(ctx.values, value)}`}`
|
|
2228
|
+
);
|
|
2229
|
+
}
|
|
2214
2230
|
}
|
|
2215
2231
|
}
|
|
2216
2232
|
};
|
|
@@ -4706,7 +4722,7 @@ const makeSQL = (table, options) => {
|
|
|
4706
4722
|
sql.push(`WINDOW ${window.join(", ")}`);
|
|
4707
4723
|
}
|
|
4708
4724
|
if (query.union) {
|
|
4709
|
-
query.union
|
|
4725
|
+
for (const item of query.union) {
|
|
4710
4726
|
let itemSql;
|
|
4711
4727
|
if (orchidCore.isExpression(item.arg)) {
|
|
4712
4728
|
itemSql = item.arg.toSQL(ctx, quotedAs);
|
|
@@ -4715,7 +4731,7 @@ const makeSQL = (table, options) => {
|
|
|
4715
4731
|
itemSql = argSql.text;
|
|
4716
4732
|
}
|
|
4717
4733
|
sql.push(`${item.kind} ${item.wrap ? `(${itemSql})` : itemSql}`);
|
|
4718
|
-
}
|
|
4734
|
+
}
|
|
4719
4735
|
}
|
|
4720
4736
|
if (query.order) {
|
|
4721
4737
|
pushOrderBySql(ctx, query, quotedAs, query.order);
|
|
@@ -8488,6 +8504,11 @@ class Where {
|
|
|
8488
8504
|
* // where column equals to raw SQL
|
|
8489
8505
|
* // import `sql` from your `BaseTable`
|
|
8490
8506
|
* column: sql`sql expression`,
|
|
8507
|
+
* // or use `(q) => q.sql` for the same
|
|
8508
|
+
* column2: (q) => q.sql`sql expression`,
|
|
8509
|
+
*
|
|
8510
|
+
* // reference other columns in such a way:
|
|
8511
|
+
* firstName: (q) => q.ref('lastName'),
|
|
8491
8512
|
* });
|
|
8492
8513
|
* ```
|
|
8493
8514
|
*
|
|
@@ -10336,6 +10357,29 @@ class RefExpression extends orchidCore.Expression {
|
|
|
10336
10357
|
return columnToSql(ctx, this.q, this.q.shape, this.ref, quotedAs);
|
|
10337
10358
|
}
|
|
10338
10359
|
}
|
|
10360
|
+
class OrExpression extends orchidCore.Expression {
|
|
10361
|
+
constructor(args) {
|
|
10362
|
+
super();
|
|
10363
|
+
this.args = args;
|
|
10364
|
+
this.q = { expr: this };
|
|
10365
|
+
}
|
|
10366
|
+
makeSQL(ctx, quotedAs) {
|
|
10367
|
+
const res = [];
|
|
10368
|
+
for (const arg of this.args) {
|
|
10369
|
+
if (arg) {
|
|
10370
|
+
if (orchidCore.isExpression(arg)) {
|
|
10371
|
+
const sql = arg.toSQL(ctx, quotedAs);
|
|
10372
|
+
if (sql)
|
|
10373
|
+
res.push(sql);
|
|
10374
|
+
} else {
|
|
10375
|
+
res.push(`(${arg.toSQL(ctx).text})`);
|
|
10376
|
+
}
|
|
10377
|
+
}
|
|
10378
|
+
}
|
|
10379
|
+
return `(${res.join(" OR ")})`;
|
|
10380
|
+
}
|
|
10381
|
+
}
|
|
10382
|
+
Object.assign(OrExpression.prototype, Operators.boolean);
|
|
10339
10383
|
class ExpressionMethods {
|
|
10340
10384
|
/**
|
|
10341
10385
|
* `column` references a table column, this can be used in raw SQL or when building a column expression.
|
|
@@ -10446,6 +10490,9 @@ class ExpressionMethods {
|
|
|
10446
10490
|
fn(fn, args, options) {
|
|
10447
10491
|
return makeFnExpression(this, orchidCore.emptyObject, fn, args, options);
|
|
10448
10492
|
}
|
|
10493
|
+
or(...args) {
|
|
10494
|
+
return new OrExpression(args);
|
|
10495
|
+
}
|
|
10449
10496
|
}
|
|
10450
10497
|
|
|
10451
10498
|
const _queryAll = (q) => {
|
|
@@ -11755,6 +11802,7 @@ exports.NumberBaseColumn = NumberBaseColumn;
|
|
|
11755
11802
|
exports.OnConflictQueryBuilder = OnConflictQueryBuilder;
|
|
11756
11803
|
exports.OnMethods = OnMethods;
|
|
11757
11804
|
exports.Operators = Operators;
|
|
11805
|
+
exports.OrExpression = OrExpression;
|
|
11758
11806
|
exports.OrchidOrmError = OrchidOrmError;
|
|
11759
11807
|
exports.OrchidOrmInternalError = OrchidOrmInternalError;
|
|
11760
11808
|
exports.PathColumn = PathColumn;
|