pqb 0.40.8 → 0.40.9
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 +10 -9
- package/dist/index.js +53 -51
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +53 -51
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -384,6 +384,8 @@ interface CommonQueryData {
|
|
|
384
384
|
outerJoinOverrides?: JoinOverrides;
|
|
385
385
|
schema?: string;
|
|
386
386
|
select?: SelectItem[];
|
|
387
|
+
selectAllColumns?: string[];
|
|
388
|
+
selectAllKeys?: RecordUnknown;
|
|
387
389
|
/**
|
|
388
390
|
* column type for query with 'value' or 'valueOrThrow' return type
|
|
389
391
|
* Is needed in {@link getShapeFromSelect} to get shape of sub-select that returns a single value.
|
|
@@ -3345,16 +3347,15 @@ type DbTableOptionScopes<Table extends string | undefined, Shape extends QueryCo
|
|
|
3345
3347
|
[K in Keys]: (q: ScopeArgumentQuery<Table, Shape>) => QueryBase;
|
|
3346
3348
|
};
|
|
3347
3349
|
type QueryDefaultReturnData<Shape extends QueryColumnsInit> = {
|
|
3348
|
-
[K in DefaultSelectColumns<Shape>
|
|
3350
|
+
[K in DefaultSelectColumns<Shape>]: Shape[K]['outputType'];
|
|
3349
3351
|
}[];
|
|
3350
3352
|
declare const anyShape: QueryColumnsInit;
|
|
3351
3353
|
interface Db<Table extends string | undefined = undefined, Shape extends QueryColumnsInit = QueryColumnsInit, PrimaryKeys = never, UniqueColumns = never, UniqueColumnTuples = never, UniqueConstraints = never, ColumnTypes = DefaultColumnTypes<ColumnSchemaConfig>, ShapeWithComputed extends QueryColumnsInit = Shape, Scopes extends RecordUnknown | undefined = EmptyObject> extends DbBase<Adapter, Table, Shape, ColumnTypes, ShapeWithComputed>, QueryMethods<ColumnTypes>, QueryBase {
|
|
3352
|
-
result: Pick<Shape, DefaultSelectColumns<Shape
|
|
3354
|
+
result: Pick<Shape, DefaultSelectColumns<Shape>>;
|
|
3353
3355
|
queryBuilder: Db;
|
|
3354
3356
|
returnType: undefined;
|
|
3355
3357
|
then: QueryThen<QueryDefaultReturnData<Shape>>;
|
|
3356
3358
|
windows: Query['windows'];
|
|
3357
|
-
defaultSelectColumns: DefaultSelectColumns<Shape>;
|
|
3358
3359
|
relations: EmptyObject;
|
|
3359
3360
|
withData: EmptyObject;
|
|
3360
3361
|
error: new (message: string, length: number, name: QueryErrorName) => QueryError<this>;
|
|
@@ -3367,6 +3368,7 @@ interface Db<Table extends string | undefined = undefined, Shape extends QueryCo
|
|
|
3367
3368
|
[K in keyof Scopes]: true;
|
|
3368
3369
|
};
|
|
3369
3370
|
selectable: SelectableFromShape<ShapeWithComputed, Table>;
|
|
3371
|
+
defaultSelect: DefaultSelectColumns<Shape>;
|
|
3370
3372
|
};
|
|
3371
3373
|
internal: QueryInternal<{
|
|
3372
3374
|
[K in keyof PrimaryKeys]: (keyof PrimaryKeys extends K ? never : keyof PrimaryKeys) extends never ? PrimaryKeys[K] : never;
|
|
@@ -4764,7 +4766,7 @@ type FromResult<T extends FromQuerySelf, Arg extends MaybeArray<FromArg<T>>> = A
|
|
|
4764
4766
|
} : K extends 'result' ? T['withData'][Arg]['shape'] : K extends 'then' ? QueryThen<GetQueryResult<T, T['withData'][Arg]['shape']>> : T[K];
|
|
4765
4767
|
} : SetQueryTableAlias<T, Arg> : Arg extends PickQueryTableMetaResultInputType ? {
|
|
4766
4768
|
[K in keyof T]: K extends 'meta' ? {
|
|
4767
|
-
[K in keyof T['meta']]: K extends 'as' ? AliasOrTable<Arg> : K extends 'selectable' ? SelectableFromShape<Arg['result'], AliasOrTable<Arg>> : K extends 'kind' ? 'select' : T['meta'][K];
|
|
4769
|
+
[K in keyof T['meta']]: K extends 'as' ? AliasOrTable<Arg> : K extends 'selectable' ? SelectableFromShape<Arg['result'], AliasOrTable<Arg>> : K extends 'kind' ? 'select' : K extends 'defaultSelect' ? keyof Arg['result'] : T['meta'][K];
|
|
4768
4770
|
} : K extends 'result' ? Arg['result'] : K extends 'shape' ? Arg['result'] : K extends 'inputType' ? Arg['inputType'] : K extends 'then' ? QueryThen<GetQueryResult<T, Arg['result']>> : T[K];
|
|
4769
4771
|
} : Arg extends (infer A)[] ? {
|
|
4770
4772
|
[K in keyof T]: K extends 'meta' ? {
|
|
@@ -5364,11 +5366,11 @@ interface SelectAsCheckReturnTypes {
|
|
|
5364
5366
|
}
|
|
5365
5367
|
type SelectResult<T extends SelectSelf, Columns extends PropertyKey[]> = {
|
|
5366
5368
|
[K in keyof T]: K extends 'result' ? ('*' extends Columns[number] ? {
|
|
5367
|
-
[K in Columns[number] |
|
|
5369
|
+
[K in Columns[number] | T['meta']['defaultSelect'] as K extends '*' ? never : T['meta']['selectable'][K]['as']]: T['meta']['selectable'][K]['column'];
|
|
5368
5370
|
} : {
|
|
5369
5371
|
[K in Columns[number] as T['meta']['selectable'][K]['as']]: T['meta']['selectable'][K]['column'];
|
|
5370
5372
|
}) & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown) : K extends 'then' ? QueryThen<GetQueryResult<T, ('*' extends Columns[number] ? {
|
|
5371
|
-
[K in Exclude<Columns[number], '*'> |
|
|
5373
|
+
[K in Exclude<Columns[number], '*'> | T['meta']['defaultSelect'] as T['meta']['selectable'][K]['as']]: T['meta']['selectable'][K]['column'];
|
|
5372
5374
|
} : {
|
|
5373
5375
|
[K in Columns[number] as T['meta']['selectable'][K]['as']]: T['meta']['selectable'][K]['column'];
|
|
5374
5376
|
}) & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown)>> : T[K];
|
|
@@ -5391,9 +5393,9 @@ type SelectResultColumnsAndObj<T extends SelectSelf, Columns extends PropertyKey
|
|
|
5391
5393
|
selectable: SelectAsSelectable<Obj>;
|
|
5392
5394
|
} : K extends 'result' ? // Combine previously selected items, all columns if * was provided,
|
|
5393
5395
|
{
|
|
5394
|
-
[K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> |
|
|
5396
|
+
[K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> | T['meta']['defaultSelect'] : Columns[number]) | keyof Obj as K extends Columns[number] ? T['meta']['selectable'][K]['as'] : K]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : T['meta']['selectable'][K]['column'];
|
|
5395
5397
|
} & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown) : K extends 'then' ? QueryThen<GetQueryResult<T, {
|
|
5396
|
-
[K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> |
|
|
5398
|
+
[K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> | T['meta']['defaultSelect'] : Columns[number]) | keyof Obj as K extends Columns[number] ? T['meta']['selectable'][K]['as'] : K]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : T['meta']['selectable'][K]['column'];
|
|
5397
5399
|
} & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown)>> : T[K];
|
|
5398
5400
|
};
|
|
5399
5401
|
type SelectAsSelectable<Arg> = {
|
|
@@ -7600,7 +7602,6 @@ interface Query extends QueryBase, QueryMethods<unknown> {
|
|
|
7600
7602
|
then: QueryThen<unknown>;
|
|
7601
7603
|
catch: QueryCatch;
|
|
7602
7604
|
windows: EmptyObject;
|
|
7603
|
-
defaultSelectColumns: string[];
|
|
7604
7605
|
relations: RelationsBase;
|
|
7605
7606
|
error: new (message: string, length: number, name: QueryErrorName) => QueryError;
|
|
7606
7607
|
}
|
package/dist/index.js
CHANGED
|
@@ -805,8 +805,8 @@ const columnCode = (type, ctx, key, code, data = type.data, skip) => {
|
|
|
805
805
|
orchidCore.addCode(code, part);
|
|
806
806
|
}
|
|
807
807
|
}
|
|
808
|
-
if (data.
|
|
809
|
-
orchidCore.addCode(code, ".
|
|
808
|
+
if (data.explicitSelect)
|
|
809
|
+
orchidCore.addCode(code, ".select(false)");
|
|
810
810
|
if (data.isNullable)
|
|
811
811
|
orchidCore.addCode(code, ".nullable()");
|
|
812
812
|
if (type.encodeFn && type.encodeFn !== (skip == null ? void 0 : skip.encodeFn))
|
|
@@ -2358,7 +2358,7 @@ const getArgQueryTarget = (ctx, first, joinSubQuery, cloned) => {
|
|
|
2358
2358
|
}
|
|
2359
2359
|
};
|
|
2360
2360
|
const subJoinToSql = (ctx, jq, innerAs, outerAs, cloned) => {
|
|
2361
|
-
if (!jq.q.select && jq.
|
|
2361
|
+
if (!jq.q.select && jq.q.selectAllColumns) {
|
|
2362
2362
|
if (!cloned)
|
|
2363
2363
|
jq = jq.clone();
|
|
2364
2364
|
jq.q.select = [new RawSQL(`${innerAs}.*`)];
|
|
@@ -2695,7 +2695,7 @@ const _join = (query, require2, type, first, args) => {
|
|
|
2695
2695
|
);
|
|
2696
2696
|
if (joinKey && "s" in joinArgs && joinArgs.s) {
|
|
2697
2697
|
const j = "j" in joinArgs ? (_b = joinArgs.r) != null ? _b : joinArgs.j : "r" in joinArgs ? joinArgs.r : joinArgs.q;
|
|
2698
|
-
if (j.q.select || !j.
|
|
2698
|
+
if (j.q.select || !j.q.selectAllColumns) {
|
|
2699
2699
|
const shape2 = getShapeFromSelect(j, true);
|
|
2700
2700
|
setQueryObjectValue(
|
|
2701
2701
|
query,
|
|
@@ -4715,7 +4715,7 @@ class SelectItemExpression extends orchidCore.Expression {
|
|
|
4715
4715
|
}
|
|
4716
4716
|
// `makeSQL` acts similarly to how select args are handled
|
|
4717
4717
|
makeSQL(ctx, quotedAs) {
|
|
4718
|
-
return typeof this.item === "string" ? this.item === "*" ? selectAllSql(this.
|
|
4718
|
+
return typeof this.item === "string" ? this.item === "*" ? selectAllSql(this.q, quotedAs) : columnToSql(ctx, this.q, this.q.shape, this.item, quotedAs, true) : this.item.toSQL(ctx, quotedAs);
|
|
4719
4719
|
}
|
|
4720
4720
|
}
|
|
4721
4721
|
|
|
@@ -4849,12 +4849,14 @@ function queryFrom(self, arg) {
|
|
|
4849
4849
|
data.batchParsers = q.q.batchParsers;
|
|
4850
4850
|
}
|
|
4851
4851
|
data.from = arg;
|
|
4852
|
+
data.selectAllColumns = data.selectAllKeys = void 0;
|
|
4852
4853
|
return self;
|
|
4853
4854
|
}
|
|
4854
4855
|
function queryFromSql(self, args) {
|
|
4855
4856
|
const data = self.q;
|
|
4856
4857
|
data.as || (data.as = "t");
|
|
4857
4858
|
data.from = sqlQueryArgsToExpression(args);
|
|
4859
|
+
data.selectAllColumns = data.selectAllKeys = void 0;
|
|
4858
4860
|
return self;
|
|
4859
4861
|
}
|
|
4860
4862
|
class FromMethods {
|
|
@@ -4969,11 +4971,11 @@ const selectToSql = (ctx, table, query, quotedAs, hookSelect = query.hookSelect)
|
|
|
4969
4971
|
if (item === "*") {
|
|
4970
4972
|
if (hookSelect) {
|
|
4971
4973
|
selected != null ? selected : selected = {};
|
|
4972
|
-
for (const key in
|
|
4974
|
+
for (const key in query.selectAllKeys || query.shape) {
|
|
4973
4975
|
selected[key] = quotedAs;
|
|
4974
4976
|
}
|
|
4975
4977
|
}
|
|
4976
|
-
sql = selectAllSql(
|
|
4978
|
+
sql = selectAllSql(query, quotedAs);
|
|
4977
4979
|
} else {
|
|
4978
4980
|
const index = item.indexOf(".");
|
|
4979
4981
|
if (index !== -1) {
|
|
@@ -5075,15 +5077,15 @@ const selectToSql = (ctx, table, query, quotedAs, hookSelect = query.hookSelect)
|
|
|
5075
5077
|
list.push(sql);
|
|
5076
5078
|
}
|
|
5077
5079
|
}
|
|
5078
|
-
return list.length ? list.join(", ") : query.select ? "" : selectAllSql(
|
|
5080
|
+
return list.length ? list.join(", ") : query.select ? "" : selectAllSql(query, quotedAs);
|
|
5079
5081
|
};
|
|
5080
5082
|
function selectedObjectToSQL(ctx, quotedAs, item) {
|
|
5081
5083
|
const sql = item.toSQL(ctx, quotedAs);
|
|
5082
5084
|
return ctx.aliasValue ? `${sql} r` : sql;
|
|
5083
5085
|
}
|
|
5084
|
-
const selectAllSql = (
|
|
5086
|
+
const selectAllSql = (query, quotedAs) => {
|
|
5085
5087
|
var _a, _b, _c;
|
|
5086
|
-
return ((_a = query.join) == null ? void 0 : _a.length) ? ((_b =
|
|
5088
|
+
return ((_a = query.join) == null ? void 0 : _a.length) ? ((_b = query.selectAllColumns) == null ? void 0 : _b.map((item) => `${quotedAs}.${item}`).join(", ")) || `${quotedAs}.*` : ((_c = query.selectAllColumns) == null ? void 0 : _c.join(", ")) || "*";
|
|
5087
5089
|
};
|
|
5088
5090
|
const pushSubQuerySql = (ctx, query, as, list, quotedAs) => {
|
|
5089
5091
|
var _a, _b, _c;
|
|
@@ -5277,7 +5279,7 @@ const pushWithSql = (ctx, items) => {
|
|
|
5277
5279
|
|
|
5278
5280
|
const checkIfASimpleQuery = (q) => {
|
|
5279
5281
|
var _a, _b;
|
|
5280
|
-
if (q.q.returnType && q.q.returnType !== "all" || q.
|
|
5282
|
+
if (q.q.returnType && q.q.returnType !== "all" || q.q.selectAllColumns || ((_a = q.q.and) == null ? void 0 : _a.length) || ((_b = q.q.or) == null ? void 0 : _b.length) || q.q.scopes)
|
|
5281
5283
|
return false;
|
|
5282
5284
|
const keys = Object.keys(q.q);
|
|
5283
5285
|
return !keys.some((key) => queryKeysOfNotSimpleQuery.includes(key));
|
|
@@ -5305,7 +5307,7 @@ const pushFromAndAs = (ctx, table, data, quotedAs) => {
|
|
|
5305
5307
|
const from = getFrom(ctx, table, data, quotedAs);
|
|
5306
5308
|
sql += from;
|
|
5307
5309
|
if (data.as && quotedAs && quotedAs !== from) {
|
|
5308
|
-
sql += `
|
|
5310
|
+
sql += ` ${quotedAs}`;
|
|
5309
5311
|
}
|
|
5310
5312
|
for (const as in data.sources) {
|
|
5311
5313
|
const source = data.sources[as];
|
|
@@ -9439,16 +9441,17 @@ var __spreadValues$5 = (a, b) => {
|
|
|
9439
9441
|
}
|
|
9440
9442
|
return a;
|
|
9441
9443
|
};
|
|
9442
|
-
const mergableObjects =
|
|
9443
|
-
shape
|
|
9444
|
-
withShapes
|
|
9445
|
-
parsers
|
|
9446
|
-
defaults
|
|
9447
|
-
joinedShapes
|
|
9448
|
-
joinedParsers
|
|
9449
|
-
joinedBatchParsers
|
|
9450
|
-
selectedComputeds
|
|
9451
|
-
|
|
9444
|
+
const mergableObjects = /* @__PURE__ */ new Set([
|
|
9445
|
+
"shape",
|
|
9446
|
+
"withShapes",
|
|
9447
|
+
"parsers",
|
|
9448
|
+
"defaults",
|
|
9449
|
+
"joinedShapes",
|
|
9450
|
+
"joinedParsers",
|
|
9451
|
+
"joinedBatchParsers",
|
|
9452
|
+
"selectedComputeds"
|
|
9453
|
+
]);
|
|
9454
|
+
const dontMergeArrays = /* @__PURE__ */ new Set(["selectAllColumns", "selectAllKeys"]);
|
|
9452
9455
|
class MergeQueryMethods {
|
|
9453
9456
|
merge(q) {
|
|
9454
9457
|
const query = this.clone();
|
|
@@ -9464,8 +9467,10 @@ class MergeQueryMethods {
|
|
|
9464
9467
|
break;
|
|
9465
9468
|
case "object":
|
|
9466
9469
|
if (Array.isArray(value)) {
|
|
9467
|
-
|
|
9468
|
-
|
|
9470
|
+
if (!dontMergeArrays.has(key)) {
|
|
9471
|
+
a[key] = a[key] ? [...a[key], ...value] : value;
|
|
9472
|
+
}
|
|
9473
|
+
} else if (mergableObjects.has(key)) {
|
|
9469
9474
|
a[key] = a[key] ? __spreadValues$5(__spreadValues$5({}, a[key]), value) : value;
|
|
9470
9475
|
} else if (key === "union") {
|
|
9471
9476
|
a[key] = a[key] ? {
|
|
@@ -11385,7 +11390,11 @@ class QueryUpsertOrCreate {
|
|
|
11385
11390
|
if (!orchidCore.isObjectEmpty(updateData)) {
|
|
11386
11391
|
_queryUpdate(q, updateData);
|
|
11387
11392
|
}
|
|
11388
|
-
|
|
11393
|
+
const c = orCreate(q, data.create, updateData, mergeData);
|
|
11394
|
+
if (!c.q.select) {
|
|
11395
|
+
c.q.returnType = "void";
|
|
11396
|
+
}
|
|
11397
|
+
return c;
|
|
11389
11398
|
}
|
|
11390
11399
|
/**
|
|
11391
11400
|
* `orCreate` creates a record only if it was not found by conditions.
|
|
@@ -12686,7 +12695,7 @@ class Db {
|
|
|
12686
12695
|
const parsers = {};
|
|
12687
12696
|
let hasParsers = false;
|
|
12688
12697
|
let modifyQuery = void 0;
|
|
12689
|
-
let
|
|
12698
|
+
let prepareSelectAll = false;
|
|
12690
12699
|
const { snakeCase } = options;
|
|
12691
12700
|
for (const key in shape) {
|
|
12692
12701
|
const column = shape[key];
|
|
@@ -12696,14 +12705,17 @@ class Db {
|
|
|
12696
12705
|
parsers[key] = column.parseFn;
|
|
12697
12706
|
}
|
|
12698
12707
|
if (column.data.name) {
|
|
12699
|
-
|
|
12708
|
+
prepareSelectAll = true;
|
|
12700
12709
|
} else if (snakeCase) {
|
|
12701
12710
|
const snakeName = orchidCore.toSnakeCase(key);
|
|
12702
12711
|
if (snakeName !== key) {
|
|
12703
|
-
|
|
12712
|
+
prepareSelectAll = true;
|
|
12704
12713
|
column.data.name = snakeName;
|
|
12705
12714
|
}
|
|
12706
12715
|
}
|
|
12716
|
+
if (column.data.explicitSelect) {
|
|
12717
|
+
prepareSelectAll = true;
|
|
12718
|
+
}
|
|
12707
12719
|
const { modifyQuery: mq } = column.data;
|
|
12708
12720
|
if (mq) {
|
|
12709
12721
|
modifyQuery = orchidCore.pushOrNewArray(modifyQuery, (q) => mq(q, column));
|
|
@@ -12723,17 +12735,6 @@ class Db {
|
|
|
12723
12735
|
}
|
|
12724
12736
|
}
|
|
12725
12737
|
}
|
|
12726
|
-
if (hasCustomName) {
|
|
12727
|
-
const list = [];
|
|
12728
|
-
for (const key in shape) {
|
|
12729
|
-
const column = shape[key];
|
|
12730
|
-
list.push(
|
|
12731
|
-
column.data.name ? `"${column.data.name}" AS "${key}"` : `"${key}"`
|
|
12732
|
-
);
|
|
12733
|
-
}
|
|
12734
|
-
this.internal.columnsForSelectAll = list;
|
|
12735
|
-
this.internal.columnsKeysForSelectAll = __spreadValues({}, shape);
|
|
12736
|
-
}
|
|
12737
12738
|
this.q = {
|
|
12738
12739
|
adapter,
|
|
12739
12740
|
shape,
|
|
@@ -12766,21 +12767,22 @@ class Db {
|
|
|
12766
12767
|
const columns = Object.keys(
|
|
12767
12768
|
shape
|
|
12768
12769
|
);
|
|
12769
|
-
const { toSQL } = this;
|
|
12770
12770
|
this.columns = columns;
|
|
12771
|
-
this.defaultSelectColumns = columns.filter(
|
|
12772
|
-
(column) => !shape[column].data.isHidden
|
|
12773
|
-
);
|
|
12774
12771
|
if (options.computed)
|
|
12775
12772
|
applyComputedColumns(this, options.computed);
|
|
12776
|
-
|
|
12777
|
-
|
|
12778
|
-
const
|
|
12779
|
-
|
|
12780
|
-
|
|
12781
|
-
|
|
12782
|
-
|
|
12783
|
-
|
|
12773
|
+
if (prepareSelectAll) {
|
|
12774
|
+
const list = [];
|
|
12775
|
+
for (const key in shape) {
|
|
12776
|
+
const column = shape[key];
|
|
12777
|
+
if (!column.data.explicitSelect) {
|
|
12778
|
+
list.push(
|
|
12779
|
+
column.data.name ? `"${column.data.name}" AS "${key}"` : `"${key}"`
|
|
12780
|
+
);
|
|
12781
|
+
}
|
|
12782
|
+
}
|
|
12783
|
+
this.q.selectAllColumns = list;
|
|
12784
|
+
this.q.selectAllKeys = __spreadValues({}, shape);
|
|
12785
|
+
}
|
|
12784
12786
|
if (modifyQuery) {
|
|
12785
12787
|
for (const cb of modifyQuery) {
|
|
12786
12788
|
cb(this);
|