pqb 0.38.3 → 0.38.5
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 +6 -2
- package/dist/index.js +41 -20
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +41 -20
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PoolConfig, Pool, PoolClient } from 'pg';
|
|
2
2
|
import * as orchid_core from 'orchid-core';
|
|
3
|
-
import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, SingleSqlItem, Sql, RecordUnknown, RecordKeyTrue, EmptyObject, QueryBaseCommon, QueryColumns, QueryMetaBase, QueryReturnType, QueryThen, Expression, MaybeArray, TemplateLiteralArgs, QueryColumn, MaybePromise, FnUnknownToUnknown, RecordString, ColumnsShapeBase, ColumnsParsers, PickQueryTable, BatchParsers, HookSelect, QueryLogObject, QueryLogger, QueryDataTransform, ExpressionChain,
|
|
3
|
+
import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, SingleSqlItem, Sql, RecordUnknown, RecordKeyTrue, EmptyObject, QueryBaseCommon, QueryColumns, QueryMetaBase, QueryReturnType, QueryThen, Expression, MaybeArray, TemplateLiteralArgs, QueryColumn, MaybePromise, FnUnknownToUnknown, RecordString, ColumnsShapeBase, ColumnsParsers, PickQueryTable, BatchParsers, HookSelect, QueryLogObject, QueryLogger, QueryDataTransform, ExpressionChain, PickQueryShape, PickQueryTableMetaResult, EmptyTuple, PickQueryMeta, PickQueryMetaResultReturnType, QueryColumnToNullable, SelectableBase, PickQueryMetaShape, PickQueryTableMetaResultShape, PickQueryMetaResultWindows, PickOutputTypeAndOperators, PickQueryResult, ExpressionData, ValExpression, PickOutputType, SQLQueryArgs, ColumnSchemaConfig, DateColumnData, ColumnToCodeCtx, Code, TimeInterval, ColumnTypeSchemaArg, ColumnDataBase, ArrayMethodsData, RawSQLBase, RawSQLValues, ExpressionTypeMethod, DynamicSQLArg, StaticSQLArgs, ForeignKeyTable, ColumnNameOfTable, BaseNumberData, PickColumnBaseData, ColumnWithDefault, StringTypeData, PrimaryKeyColumn, ParseColumn, EncodeColumn, QueryColumnsInit, QueryLogOptions, DefaultSelectColumns, DbBase, QueryCatch, TransactionState, ColumnTypeBase, PickQueryUniqueProperties, PickQueryMetaResult, IsQuery, PickQueryTableMetaResultInputType, getValueKey, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, OperatorsNullable, PickQueryMetaReturnType, UniqueColumn, TimestampHelpers, Codes, ColumnDataCheckBase } from 'orchid-core';
|
|
4
4
|
import { inspect } from 'node:util';
|
|
5
5
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
6
6
|
|
|
@@ -384,6 +384,11 @@ interface CommonQueryData {
|
|
|
384
384
|
outerJoinOverrides?: JoinOverrides;
|
|
385
385
|
schema?: string;
|
|
386
386
|
select?: SelectItem[];
|
|
387
|
+
/**
|
|
388
|
+
* column type for query with 'value' or 'valueOrThrow' return type
|
|
389
|
+
* Is needed in {@link getShapeFromSelect} to get shape of sub-select that returns a single value.
|
|
390
|
+
*/
|
|
391
|
+
getColumn?: QueryColumn;
|
|
387
392
|
expr?: Expression;
|
|
388
393
|
as?: string;
|
|
389
394
|
from?: MaybeArray<QueryDataFromItem>;
|
|
@@ -454,7 +459,6 @@ interface SelectQueryData extends CommonQueryData {
|
|
|
454
459
|
tableNames?: string[] | Expression;
|
|
455
460
|
mode?: 'NO WAIT' | 'SKIP LOCKED';
|
|
456
461
|
};
|
|
457
|
-
[getValueKey]?: QueryColumn;
|
|
458
462
|
}
|
|
459
463
|
type CreateKind = 'object' | 'raw' | 'from';
|
|
460
464
|
interface InsertQueryData extends CommonQueryData {
|
package/dist/index.js
CHANGED
|
@@ -3278,18 +3278,7 @@ class Transaction {
|
|
|
3278
3278
|
const result = await this.q.adapter.transaction(sql, callback);
|
|
3279
3279
|
if (log)
|
|
3280
3280
|
log.afterQuery(commitSql$1, logData);
|
|
3281
|
-
|
|
3282
|
-
if (afterCommit) {
|
|
3283
|
-
const promises = [];
|
|
3284
|
-
for (let i = 0, len = afterCommit.length; i < len; i += 2) {
|
|
3285
|
-
const q = afterCommit[i];
|
|
3286
|
-
const result2 = afterCommit[i + 1];
|
|
3287
|
-
for (const fn2 of afterCommit[i + 2]) {
|
|
3288
|
-
promises.push(fn2(result2, q));
|
|
3289
|
-
}
|
|
3290
|
-
}
|
|
3291
|
-
await Promise.all(promises);
|
|
3292
|
-
}
|
|
3281
|
+
await runAfterCommit(trx.afterCommit);
|
|
3293
3282
|
return result;
|
|
3294
3283
|
} catch (err) {
|
|
3295
3284
|
if (log)
|
|
@@ -3321,6 +3310,11 @@ class Transaction {
|
|
|
3321
3310
|
await adapter.query(sql);
|
|
3322
3311
|
if (log)
|
|
3323
3312
|
log.afterQuery(sql, logData);
|
|
3313
|
+
if (transactionId === trx.testTransactionCount) {
|
|
3314
|
+
await runAfterCommit(
|
|
3315
|
+
trx.afterCommit
|
|
3316
|
+
);
|
|
3317
|
+
}
|
|
3324
3318
|
return result;
|
|
3325
3319
|
} finally {
|
|
3326
3320
|
trx.transactionId = transactionId - 1;
|
|
@@ -3328,6 +3322,19 @@ class Transaction {
|
|
|
3328
3322
|
}
|
|
3329
3323
|
}
|
|
3330
3324
|
}
|
|
3325
|
+
const runAfterCommit = async (afterCommit) => {
|
|
3326
|
+
if (afterCommit) {
|
|
3327
|
+
const promises = [];
|
|
3328
|
+
for (let i = 0, len = afterCommit.length; i < len; i += 3) {
|
|
3329
|
+
const result = afterCommit[i];
|
|
3330
|
+
const q = afterCommit[i + 1];
|
|
3331
|
+
for (const fn of afterCommit[i + 2]) {
|
|
3332
|
+
promises.push(fn(result, q));
|
|
3333
|
+
}
|
|
3334
|
+
}
|
|
3335
|
+
await Promise.all(promises);
|
|
3336
|
+
}
|
|
3337
|
+
};
|
|
3331
3338
|
|
|
3332
3339
|
const applyBatchTransforms = (query, batches) => {
|
|
3333
3340
|
if (query.transform) {
|
|
@@ -4002,19 +4009,19 @@ const filterResult = (q, returnType, queryResult, result, tempColumns, hasAfterH
|
|
|
4002
4009
|
}
|
|
4003
4010
|
}
|
|
4004
4011
|
if (returnType === "value") {
|
|
4005
|
-
return (_a = result[0]) == null ? void 0 : _a[queryResult
|
|
4012
|
+
return (_a = result[0]) == null ? void 0 : _a[getFirstResultKey(q, queryResult)];
|
|
4006
4013
|
}
|
|
4007
4014
|
if (returnType === "valueOrThrow") {
|
|
4008
4015
|
const row = result[0];
|
|
4009
4016
|
if (!row)
|
|
4010
4017
|
throw new NotFoundError(q);
|
|
4011
|
-
return row[queryResult
|
|
4018
|
+
return row[getFirstResultKey(q, queryResult)];
|
|
4012
4019
|
}
|
|
4013
4020
|
if (returnType === "rowCount") {
|
|
4014
4021
|
return queryResult.rowCount;
|
|
4015
4022
|
}
|
|
4016
4023
|
if (returnType === "pluck") {
|
|
4017
|
-
const key = queryResult
|
|
4024
|
+
const key = getFirstResultKey(q, queryResult);
|
|
4018
4025
|
return result.map((row) => row[key]);
|
|
4019
4026
|
}
|
|
4020
4027
|
if (returnType === "rows") {
|
|
@@ -4023,6 +4030,16 @@ const filterResult = (q, returnType, queryResult, result, tempColumns, hasAfterH
|
|
|
4023
4030
|
}
|
|
4024
4031
|
return;
|
|
4025
4032
|
};
|
|
4033
|
+
const getFirstResultKey = (q, queryResult) => {
|
|
4034
|
+
if (q.q.select) {
|
|
4035
|
+
return queryResult.fields[0].name;
|
|
4036
|
+
} else {
|
|
4037
|
+
for (const key in q.q.selectedComputeds) {
|
|
4038
|
+
return key;
|
|
4039
|
+
}
|
|
4040
|
+
}
|
|
4041
|
+
return;
|
|
4042
|
+
};
|
|
4026
4043
|
const filterAllResult = (result, tempColumns, hasAfterHook) => {
|
|
4027
4044
|
if (tempColumns == null ? void 0 : tempColumns.size) {
|
|
4028
4045
|
if (hasAfterHook) {
|
|
@@ -4457,7 +4474,7 @@ const getShapeFromSelect = (q, isSubQuery) => {
|
|
|
4457
4474
|
} else if (it) {
|
|
4458
4475
|
const { returnType } = it.q;
|
|
4459
4476
|
if (returnType === "value" || returnType === "valueOrThrow") {
|
|
4460
|
-
const type = it.q
|
|
4477
|
+
const type = it.q.getColumn;
|
|
4461
4478
|
if (type)
|
|
4462
4479
|
result[key] = type;
|
|
4463
4480
|
} else {
|
|
@@ -4573,7 +4590,7 @@ const _get = (query, returnType, arg) => {
|
|
|
4573
4590
|
}
|
|
4574
4591
|
}
|
|
4575
4592
|
}
|
|
4576
|
-
q
|
|
4593
|
+
q.getColumn = type;
|
|
4577
4594
|
const selected = setParserForSelectedString(
|
|
4578
4595
|
query,
|
|
4579
4596
|
arg,
|
|
@@ -4589,7 +4606,7 @@ const _get = (query, returnType, arg) => {
|
|
|
4589
4606
|
] : void 0;
|
|
4590
4607
|
} else {
|
|
4591
4608
|
type = arg.result.value;
|
|
4592
|
-
q
|
|
4609
|
+
q.getColumn = type;
|
|
4593
4610
|
addParserForRawExpression(query, orchidCore.getValueKey, arg);
|
|
4594
4611
|
q.select = [q.expr = arg];
|
|
4595
4612
|
}
|
|
@@ -6434,7 +6451,7 @@ class FnExpression extends orchidCore.Expression {
|
|
|
6434
6451
|
Object.assign(query, value.operators);
|
|
6435
6452
|
query.q.returnType = "valueOrThrow";
|
|
6436
6453
|
query.q.returnsOne = true;
|
|
6437
|
-
query.q
|
|
6454
|
+
query.q.getColumn = value;
|
|
6438
6455
|
query.q.select = [this];
|
|
6439
6456
|
const { parseFn } = value;
|
|
6440
6457
|
if (parseFn) {
|
|
@@ -9153,7 +9170,6 @@ class MergeQueryMethods {
|
|
|
9153
9170
|
break;
|
|
9154
9171
|
}
|
|
9155
9172
|
}
|
|
9156
|
-
a[orchidCore.getValueKey] = b[orchidCore.getValueKey];
|
|
9157
9173
|
if (b.returnType)
|
|
9158
9174
|
a.returnType = b.returnType;
|
|
9159
9175
|
return query;
|
|
@@ -12695,6 +12711,7 @@ const testTransaction = {
|
|
|
12695
12711
|
adapter.query = t.query.bind(t);
|
|
12696
12712
|
adapter.arrays = t.arrays.bind(t);
|
|
12697
12713
|
adapter.transaction = t.transaction.bind(t);
|
|
12714
|
+
trx.testTransactionCount = trx.testTransactionCount ? trx.testTransactionCount + 1 : 1;
|
|
12698
12715
|
}
|
|
12699
12716
|
data.reject = rej;
|
|
12700
12717
|
});
|
|
@@ -12703,6 +12720,10 @@ const testTransaction = {
|
|
|
12703
12720
|
throw err;
|
|
12704
12721
|
}
|
|
12705
12722
|
}).finally(() => {
|
|
12723
|
+
const trx = db.internal.transactionStorage.getStore();
|
|
12724
|
+
if (trx == null ? void 0 : trx.testTransactionCount) {
|
|
12725
|
+
trx.testTransactionCount--;
|
|
12726
|
+
}
|
|
12706
12727
|
db.internal.transactionStorage.getStore = getStore;
|
|
12707
12728
|
});
|
|
12708
12729
|
});
|