pqb 0.10.16 → 0.10.18
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 +36 -27
- package/dist/index.js +24 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as orchid_core from 'orchid-core';
|
|
2
|
-
import { EmptyObject, RawExpression, ColumnTypeBase, MaybeArray, QueryResultRow, AdapterBase, QueryInput, ColumnsShapeBase, StringKey, ColumnOutput,
|
|
2
|
+
import { EmptyObject, RawExpression, ColumnTypeBase, MaybeArray, QueryResultRow, AdapterBase, QueryInput, ColumnsShapeBase, StringKey, ColumnOutput, NullableColumn, QueryInternal, QueryMetaBase, ColumnTypesBase, DbBase, ThenResult, ColumnShapeOutput, DefaultSelectColumns, SetOptional, Spread, CoalesceString, QueryBaseCommon, QueryCommon, ColumnDataBase, BaseOperators, PrimaryKeyColumn, HiddenColumn, ValidationContext, MessageParam, BaseNumberData, Code, numberTypeMethods, BaseStringData, DateColumnData, dateTypeMethods, JSONTypeAny, record, ArrayMethodsData, arrayMethods, name } from 'orchid-core';
|
|
3
3
|
import { PoolConfig, Pool, PoolClient } from 'pg';
|
|
4
4
|
|
|
5
5
|
declare type BaseRelation = {
|
|
@@ -462,12 +462,22 @@ declare class QueryGet {
|
|
|
462
462
|
}
|
|
463
463
|
|
|
464
464
|
declare type SelectArg<T extends QueryBase> = '*' | StringKey<keyof T['selectable']> | (T['relations'] extends Record<string, Relation> ? StringKey<keyof T['relations']> : never) | SelectAsArg<T>;
|
|
465
|
-
declare type SelectAsArg<T extends QueryBase> = Record<string,
|
|
466
|
-
declare type
|
|
465
|
+
declare type SelectAsArg<T extends QueryBase> = Record<string, SelectAsValue<T>>;
|
|
466
|
+
declare type SelectAsValue<T extends QueryBase> = StringKey<keyof T['selectable']> | RawExpression | ((q: T) => Query) | ((q: T) => RawExpression);
|
|
467
|
+
declare type SelectResult<T extends Query, Args extends SelectArg<T>[], SelectAllResult extends ColumnsShapeBase = '*' extends Args[number] ? T['shape'] : EmptyObject, SelectStringsResult extends ColumnsShapeBase = SelectStringArgsResult<T, Args>, SelectAsResult extends ColumnsShapeBase = SpreadSelectArgs<T, Args>> = AddQuerySelect<T, SelectAllResult & {
|
|
468
|
+
[K in keyof SelectStringsResult]: K extends keyof SelectAsResult ? unknown : SelectStringsResult[K];
|
|
469
|
+
} & SelectAsResult>;
|
|
470
|
+
declare type SpreadSelectArgs<T extends Query, Args extends [...any]> = Args extends [
|
|
471
|
+
infer L,
|
|
472
|
+
...infer R
|
|
473
|
+
] ? L extends SelectAsArg<T> ? SelectAsResult<T, L> & SpreadSelectArgs<T, R> : SpreadSelectArgs<T, R> : EmptyObject;
|
|
474
|
+
declare type SelectStringArgsResult<T extends Query, Args extends SelectArg<T>[]> = {
|
|
467
475
|
[Arg in Args[number] as Arg extends keyof T['selectable'] ? T['selectable'][Arg]['as'] : Arg extends keyof T['relations'] ? Arg : never]: Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : T['relations'] extends Record<string, Relation> ? Arg extends keyof T['relations'] ? T['relations'][Arg]['returns'] extends 'many' ? ArrayOfColumnsObjects<T['relations'][Arg]['table']['result']> : T['relations'][Arg]['options']['required'] extends true ? ColumnsObject<T['relations'][Arg]['table']['result']> : NullableColumn<ColumnsObject<T['relations'][Arg]['table']['result']>> : never : never;
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
|
|
476
|
+
};
|
|
477
|
+
declare type SelectAsResult<T extends Query, Arg extends SelectAsArg<T>> = {
|
|
478
|
+
[K in keyof Arg]: SelectAsValueResult<T, Arg[K]>;
|
|
479
|
+
};
|
|
480
|
+
declare type SelectAsValueResult<T extends Query, Arg extends SelectAsValue<T>> = Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RawExpression ? Arg['__column'] : Arg extends (q: T) => infer R ? R extends Query ? SelectSubQueryResult<R> : R extends RawExpression ? R['__column'] : never : never;
|
|
471
481
|
declare type SelectSubQueryResult<Arg extends Query & {
|
|
472
482
|
[isRequiredRelationKey]?: boolean;
|
|
473
483
|
}> = QueryReturnsAll<Arg['returnType']> extends true ? ArrayOfColumnsObjects<Arg['result']> : Arg['returnType'] extends 'valueOrThrow' ? Arg['result']['value'] : Arg['returnType'] extends 'pluck' ? PluckResultColumnType<Arg['result']['pluck']> : Arg[isRequiredRelationKey] extends true ? ColumnsObject<Arg['result']> : NullableColumn<ColumnsObject<Arg['result']>>;
|
|
@@ -489,23 +499,22 @@ declare type FromArgs<T extends Query> = [
|
|
|
489
499
|
only?: boolean;
|
|
490
500
|
}
|
|
491
501
|
];
|
|
492
|
-
declare type SetFromSelectable<T extends Query, Arg extends Query> = Omit<T, 'selectable'> & {
|
|
493
|
-
selectable: {
|
|
494
|
-
[K in keyof Arg['result']]: K extends string ? {
|
|
495
|
-
as: K;
|
|
496
|
-
column: Arg['result'][K];
|
|
497
|
-
} : never;
|
|
498
|
-
};
|
|
499
|
-
};
|
|
500
|
-
declare type MergeFromResult<T extends Query, Arg extends Query> = AddQuerySelect<Omit<T, 'result'> & {
|
|
501
|
-
result: Pick<T['result'], keyof Arg['result']>;
|
|
502
|
-
}, Arg['result']>;
|
|
503
502
|
declare type FromResult<T extends Query, Args extends FromArgs<T>, Arg = Args[0]> = Arg extends string ? T['withData'] extends Record<string, WithDataItem> ? Arg extends keyof T['withData'] ? Omit<T, 'meta' | 'selectable'> & {
|
|
504
503
|
meta: Omit<T['meta'], 'as'> & {
|
|
505
504
|
as?: string;
|
|
506
505
|
};
|
|
507
506
|
selectable: SelectableFromShape<T['withData'][Arg]['shape'], Arg>;
|
|
508
|
-
} : SetQueryTableAlias<T, Arg> : SetQueryTableAlias<T, Arg> : Arg extends Query ?
|
|
507
|
+
} : SetQueryTableAlias<T, Arg> : SetQueryTableAlias<T, Arg> : Arg extends Query ? FromQueryResult<T, Arg> : T;
|
|
508
|
+
declare type FromQueryResult<T extends Query, Q extends Query, Selectable extends SelectableBase = {
|
|
509
|
+
[K in keyof Q['result']]: K extends string ? {
|
|
510
|
+
as: K;
|
|
511
|
+
column: Q['result'][K];
|
|
512
|
+
} : never;
|
|
513
|
+
}> = {
|
|
514
|
+
[K in keyof T]: K extends 'meta' ? Omit<T['meta'], 'hasSelect' | 'as'> & {
|
|
515
|
+
as: AliasOrTable<Q>;
|
|
516
|
+
} : K extends 'selectable' ? Selectable : K extends 'result' | 'shape' ? Q['result'] : K extends 'then' ? QueryThen<T['returnType'], Q['result']> : T[K];
|
|
517
|
+
};
|
|
509
518
|
declare class From {
|
|
510
519
|
from<T extends Query, Args extends FromArgs<T>>(this: T, ...args: Args): FromResult<T, Args>;
|
|
511
520
|
_from<T extends Query, Args extends FromArgs<T>>(this: T, ...args: Args): FromResult<T, Args>;
|
|
@@ -605,7 +614,7 @@ declare class WhereQueryBuilder<Q extends QueryBase = QueryBase> extends Where i
|
|
|
605
614
|
relations: Q['relations'];
|
|
606
615
|
baseQuery: Query;
|
|
607
616
|
withData: {};
|
|
608
|
-
internal:
|
|
617
|
+
internal: QueryInternal;
|
|
609
618
|
constructor(q: QueryBase | string, { shape, joinedShapes }: Pick<QueryData, 'shape' | 'joinedShapes'>);
|
|
610
619
|
clone<T extends this>(this: T): T;
|
|
611
620
|
}
|
|
@@ -1565,15 +1574,15 @@ declare type QueryThen<ReturnType extends QueryReturnType, Result extends Column
|
|
|
1565
1574
|
} ? ThenResult<Result['value']['type']> : never : ReturnType extends 'rows' ? ThenResult<ColumnShapeOutput<Result>[keyof Result][][]> : ReturnType extends 'pluck' ? Result extends {
|
|
1566
1575
|
pluck: ColumnType;
|
|
1567
1576
|
} ? ThenResult<Result['pluck']['type'][]> : never : ReturnType extends 'rowCount' ? ThenResult<number> : ReturnType extends 'void' ? ThenResult<void> : never;
|
|
1568
|
-
declare type AddQuerySelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase> = T['meta']['hasSelect'] extends true ?
|
|
1569
|
-
|
|
1570
|
-
then: QueryThen<T['returnType'], Spread<[T['result'], Result]>>;
|
|
1571
|
-
} : Omit<T, 'result' | 'then'> & {
|
|
1572
|
-
meta: {
|
|
1577
|
+
declare type AddQuerySelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase> = T['meta']['hasSelect'] extends true ? MergeSelect<T, Result> : {
|
|
1578
|
+
[K in keyof T]: K extends 'meta' ? T['meta'] & {
|
|
1573
1579
|
hasSelect: true;
|
|
1574
|
-
};
|
|
1575
|
-
|
|
1576
|
-
|
|
1580
|
+
} : K extends 'result' ? Result : K extends 'then' ? QueryThen<T['returnType'], Result> : T[K];
|
|
1581
|
+
};
|
|
1582
|
+
declare type MergeSelect<T extends Pick<Query, 'result' | 'then' | 'returnType' | 'meta'>, Result extends ColumnsShapeBase, Merged extends ColumnsShapeBase = {
|
|
1583
|
+
[K in keyof T['result']]: K extends keyof Result ? unknown : T['result'][K];
|
|
1584
|
+
} & Result> = {
|
|
1585
|
+
[K in keyof T]: K extends 'result' ? Merged : K extends 'then' ? QueryThen<T['returnType'], Merged> : T[K];
|
|
1577
1586
|
};
|
|
1578
1587
|
declare type SetQueryReturns<T extends Query, R extends QueryReturnType> = Omit<T, 'returnType' | 'then'> & {
|
|
1579
1588
|
returnType: R;
|
package/dist/index.js
CHANGED
|
@@ -2529,8 +2529,22 @@ const pushInsertSql = (ctx, table, query, quotedAs) => {
|
|
|
2529
2529
|
} else {
|
|
2530
2530
|
ctx.sql.push(getRaw(expr, ctx.values));
|
|
2531
2531
|
}
|
|
2532
|
-
} else {
|
|
2533
|
-
|
|
2532
|
+
} else if (type === "merge") {
|
|
2533
|
+
const { indexes } = table.internal;
|
|
2534
|
+
const quotedUniques = query.columns.reduce((arr, key, i) => {
|
|
2535
|
+
var _a2, _b2;
|
|
2536
|
+
const unique = ((_b2 = ((_a2 = shape[key]) == null ? void 0 : _a2.data).indexes) == null ? void 0 : _b2.some(
|
|
2537
|
+
(index) => index.unique
|
|
2538
|
+
)) || indexes.some(
|
|
2539
|
+
(index) => index.columns.some(
|
|
2540
|
+
(item) => "column" in item && item.column === key
|
|
2541
|
+
)
|
|
2542
|
+
);
|
|
2543
|
+
if (unique)
|
|
2544
|
+
arr.push(quotedColumns[i]);
|
|
2545
|
+
return arr;
|
|
2546
|
+
}, []);
|
|
2547
|
+
ctx.sql.push(`(${quotedUniques.join(", ")})`);
|
|
2534
2548
|
}
|
|
2535
2549
|
if (type === "ignore") {
|
|
2536
2550
|
ctx.sql.push("DO NOTHING");
|
|
@@ -4961,11 +4975,14 @@ class Where {
|
|
|
4961
4975
|
return this._orNot({ EXISTS: args });
|
|
4962
4976
|
}
|
|
4963
4977
|
}
|
|
4978
|
+
const emptyInternal = {
|
|
4979
|
+
indexes: []
|
|
4980
|
+
};
|
|
4964
4981
|
class WhereQueryBuilder extends Where {
|
|
4965
4982
|
constructor(q, { shape, joinedShapes }) {
|
|
4966
4983
|
super();
|
|
4967
4984
|
this.withData = orchidCore.emptyObject;
|
|
4968
|
-
this.internal =
|
|
4985
|
+
this.internal = emptyInternal;
|
|
4969
4986
|
this.table = typeof q === "object" ? q.table : q;
|
|
4970
4987
|
this.shape = shape;
|
|
4971
4988
|
this.query = {
|
|
@@ -5985,7 +6002,10 @@ class Db {
|
|
|
5985
6002
|
this.whereQueryBuilder = WhereQueryBuilder;
|
|
5986
6003
|
this.onQueryBuilder = OnQueryBuilder;
|
|
5987
6004
|
var _a, _b;
|
|
5988
|
-
|
|
6005
|
+
const tableData = getTableData();
|
|
6006
|
+
this.internal = {
|
|
6007
|
+
indexes: tableData.indexes
|
|
6008
|
+
};
|
|
5989
6009
|
this.baseQuery = this;
|
|
5990
6010
|
const logger = options.logger || console;
|
|
5991
6011
|
const parsers = {};
|