pqb 0.73.2 → 0.73.3
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.js +77 -73
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +77 -73
- package/dist/index.mjs.map +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/internal.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -4101,6 +4101,81 @@ const getResetSetConfigSql = (parentSetConfig, options) => {
|
|
|
4101
4101
|
const setConfigSql = (key, value) => {
|
|
4102
4102
|
return `set_config('${key.replace(/'/g, "''")}', '${typeof value === "string" ? value.replace(/'/g, "''") : value === void 0 ? "" : value}', true)`;
|
|
4103
4103
|
};
|
|
4104
|
+
var Rollback = class extends Error {};
|
|
4105
|
+
const trxForTest = Symbol("trxForTest");
|
|
4106
|
+
const argToDb = (arg) => "$qb" in arg ? arg.$qb : arg;
|
|
4107
|
+
const testTransaction = {
|
|
4108
|
+
/**
|
|
4109
|
+
* Start a test transaction.
|
|
4110
|
+
* The returned promise is resolved immediately when transaction starts, not waiting for it to end.
|
|
4111
|
+
*
|
|
4112
|
+
* @param arg - ORM instance or a queryable instance (such as db.someTable).
|
|
4113
|
+
*/
|
|
4114
|
+
start(arg) {
|
|
4115
|
+
const db = argToDb(arg);
|
|
4116
|
+
const { asyncStorage } = db.internal;
|
|
4117
|
+
const { getStore } = asyncStorage;
|
|
4118
|
+
const { adapter } = db.baseQuery.q;
|
|
4119
|
+
const data = { adapter: {
|
|
4120
|
+
query: adapter.query,
|
|
4121
|
+
arrays: adapter.arrays,
|
|
4122
|
+
transaction: adapter.transaction
|
|
4123
|
+
} };
|
|
4124
|
+
(db.internal[trxForTest] ??= []).push(data);
|
|
4125
|
+
return new Promise((resolve) => {
|
|
4126
|
+
data.promise = db.transaction(() => {
|
|
4127
|
+
resolve();
|
|
4128
|
+
return new Promise((_, rej) => {
|
|
4129
|
+
const state = asyncStorage.getStore();
|
|
4130
|
+
db.internal.asyncStorage.getStore = () => state;
|
|
4131
|
+
const t = state?.transactionAdapter;
|
|
4132
|
+
if (t) {
|
|
4133
|
+
adapter.query = t.query.bind(t);
|
|
4134
|
+
adapter.arrays = t.arrays.bind(t);
|
|
4135
|
+
adapter.transaction = t.transaction.bind(t);
|
|
4136
|
+
state.testTransactionCount = state.testTransactionCount ? state.testTransactionCount + 1 : 1;
|
|
4137
|
+
}
|
|
4138
|
+
data.reject = rej;
|
|
4139
|
+
});
|
|
4140
|
+
}).catch((err) => {
|
|
4141
|
+
if (!(err instanceof Rollback)) throw err;
|
|
4142
|
+
}).finally(() => {
|
|
4143
|
+
const state = db.internal.asyncStorage.getStore();
|
|
4144
|
+
if (state?.testTransactionCount) state.testTransactionCount--;
|
|
4145
|
+
db.internal.asyncStorage.getStore = getStore;
|
|
4146
|
+
});
|
|
4147
|
+
});
|
|
4148
|
+
},
|
|
4149
|
+
/**
|
|
4150
|
+
* Rollback a test transaction.
|
|
4151
|
+
*
|
|
4152
|
+
* @param arg - the same ORM or query argument passed into the `testTransaction.start`.
|
|
4153
|
+
*/
|
|
4154
|
+
rollback(arg) {
|
|
4155
|
+
const db = argToDb(arg);
|
|
4156
|
+
const data = db.internal[trxForTest];
|
|
4157
|
+
const last = data?.pop();
|
|
4158
|
+
if (!last) return;
|
|
4159
|
+
if (!data?.length) Object.assign(db.baseQuery.q.adapter, last.adapter);
|
|
4160
|
+
last.reject?.(new Rollback());
|
|
4161
|
+
return last.promise;
|
|
4162
|
+
},
|
|
4163
|
+
/**
|
|
4164
|
+
* Will roll back the current `testTransaction` (won't have any effect if it was rolled back already),
|
|
4165
|
+
* and if there's no nested test transactions left, it will close the db connection.
|
|
4166
|
+
*
|
|
4167
|
+
* @param arg - the same ORM or query argument passed into the `testTransaction.start`.
|
|
4168
|
+
*/
|
|
4169
|
+
async close(arg) {
|
|
4170
|
+
const db = argToDb(arg);
|
|
4171
|
+
await this.rollback(db);
|
|
4172
|
+
if (db.internal[trxForTest]?.length === 0) return db.q.adapter.close();
|
|
4173
|
+
}
|
|
4174
|
+
};
|
|
4175
|
+
const logSavepointRollback = (log, error, rollbackSql, rollbackLogData) => {
|
|
4176
|
+
if (error instanceof Rollback) log.afterQuery(rollbackSql, rollbackLogData);
|
|
4177
|
+
else if (error) log.onError(error, rollbackSql, rollbackLogData);
|
|
4178
|
+
};
|
|
4104
4179
|
/**
|
|
4105
4180
|
* Shared runtime adapter orchestrator over a driver-specific adapter implementation.
|
|
4106
4181
|
*/
|
|
@@ -4233,7 +4308,7 @@ var TransactionAdapterClass = class {
|
|
|
4233
4308
|
rollbackSql = { text: `ROLLBACK TO SAVEPOINT "${name}"` };
|
|
4234
4309
|
rollbackLogData = log.beforeQuery(rollbackSql);
|
|
4235
4310
|
}, () => {
|
|
4236
|
-
|
|
4311
|
+
logSavepointRollback(log, error, rollbackSql, rollbackLogData);
|
|
4237
4312
|
});
|
|
4238
4313
|
}
|
|
4239
4314
|
hackySavepoint(state, text, values, arraysMode, log) {
|
|
@@ -4256,7 +4331,7 @@ var TransactionAdapterClass = class {
|
|
|
4256
4331
|
rollbackSql = { text: `ROLLBACK TO SAVEPOINT "${state.name}"` };
|
|
4257
4332
|
rollbackLogData = log.beforeQuery(rollbackSql);
|
|
4258
4333
|
}, () => {
|
|
4259
|
-
|
|
4334
|
+
logSavepointRollback(log, error, rollbackSql, rollbackLogData);
|
|
4260
4335
|
});
|
|
4261
4336
|
const activeSavepoint = state.activeSavepoint;
|
|
4262
4337
|
if (activeSavepoint) {
|
|
@@ -14562,77 +14637,6 @@ function copyTableData(query, arg) {
|
|
|
14562
14637
|
q.toSQL = () => makeCopySql(q, arg);
|
|
14563
14638
|
return q;
|
|
14564
14639
|
}
|
|
14565
|
-
var Rollback = class extends Error {};
|
|
14566
|
-
const trxForTest = Symbol("trxForTest");
|
|
14567
|
-
const argToDb = (arg) => "$qb" in arg ? arg.$qb : arg;
|
|
14568
|
-
const testTransaction = {
|
|
14569
|
-
/**
|
|
14570
|
-
* Start a test transaction.
|
|
14571
|
-
* The returned promise is resolved immediately when transaction starts, not waiting for it to end.
|
|
14572
|
-
*
|
|
14573
|
-
* @param arg - ORM instance or a queryable instance (such as db.someTable).
|
|
14574
|
-
*/
|
|
14575
|
-
start(arg) {
|
|
14576
|
-
const db = argToDb(arg);
|
|
14577
|
-
const { asyncStorage } = db.internal;
|
|
14578
|
-
const { getStore } = asyncStorage;
|
|
14579
|
-
const { adapter } = db.baseQuery.q;
|
|
14580
|
-
const data = { adapter: {
|
|
14581
|
-
query: adapter.query,
|
|
14582
|
-
arrays: adapter.arrays,
|
|
14583
|
-
transaction: adapter.transaction
|
|
14584
|
-
} };
|
|
14585
|
-
(db.internal[trxForTest] ??= []).push(data);
|
|
14586
|
-
return new Promise((resolve) => {
|
|
14587
|
-
data.promise = db.transaction(() => {
|
|
14588
|
-
resolve();
|
|
14589
|
-
return new Promise((_, rej) => {
|
|
14590
|
-
const state = asyncStorage.getStore();
|
|
14591
|
-
db.internal.asyncStorage.getStore = () => state;
|
|
14592
|
-
const t = state?.transactionAdapter;
|
|
14593
|
-
if (t) {
|
|
14594
|
-
adapter.query = t.query.bind(t);
|
|
14595
|
-
adapter.arrays = t.arrays.bind(t);
|
|
14596
|
-
adapter.transaction = t.transaction.bind(t);
|
|
14597
|
-
state.testTransactionCount = state.testTransactionCount ? state.testTransactionCount + 1 : 1;
|
|
14598
|
-
}
|
|
14599
|
-
data.reject = rej;
|
|
14600
|
-
});
|
|
14601
|
-
}).catch((err) => {
|
|
14602
|
-
if (!(err instanceof Rollback)) throw err;
|
|
14603
|
-
}).finally(() => {
|
|
14604
|
-
const state = db.internal.asyncStorage.getStore();
|
|
14605
|
-
if (state?.testTransactionCount) state.testTransactionCount--;
|
|
14606
|
-
db.internal.asyncStorage.getStore = getStore;
|
|
14607
|
-
});
|
|
14608
|
-
});
|
|
14609
|
-
},
|
|
14610
|
-
/**
|
|
14611
|
-
* Rollback a test transaction.
|
|
14612
|
-
*
|
|
14613
|
-
* @param arg - the same ORM or query argument passed into the `testTransaction.start`.
|
|
14614
|
-
*/
|
|
14615
|
-
rollback(arg) {
|
|
14616
|
-
const db = argToDb(arg);
|
|
14617
|
-
const data = db.internal[trxForTest];
|
|
14618
|
-
const last = data?.pop();
|
|
14619
|
-
if (!last) return;
|
|
14620
|
-
if (!data?.length) Object.assign(db.baseQuery.q.adapter, last.adapter);
|
|
14621
|
-
last.reject?.(new Rollback());
|
|
14622
|
-
return last.promise;
|
|
14623
|
-
},
|
|
14624
|
-
/**
|
|
14625
|
-
* Will roll back the current `testTransaction` (won't have any effect if it was rolled back already),
|
|
14626
|
-
* and if there's no nested test transactions left, it will close the db connection.
|
|
14627
|
-
*
|
|
14628
|
-
* @param arg - the same ORM or query argument passed into the `testTransaction.start`.
|
|
14629
|
-
*/
|
|
14630
|
-
async close(arg) {
|
|
14631
|
-
const db = argToDb(arg);
|
|
14632
|
-
await this.rollback(db);
|
|
14633
|
-
if (db.internal[trxForTest]?.length === 0) return db.q.adapter.close();
|
|
14634
|
-
}
|
|
14635
|
-
};
|
|
14636
14640
|
export { AdapterClass, ArrayColumn, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CidrColumn, CircleColumn, CitextColumn, Column, CustomTypeColumn, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeTzBaseClass, Db, DecimalColumn, DomainColumn, DoublePrecisionColumn, DynamicRawSQL, EnumColumn, Expression, InetColumn, IntegerBaseColumn, IntegerColumn, IntervalColumn, JSONColumn, JSONTextColumn, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MoneyColumn, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, Operators, OrchidOrmInternalError, PathColumn, PointColumn, PolygonColumn, PostgisGeographyPointColumn, QueryError, QueryHookUtils, QueryHooks, RawSql, RealColumn, SerialColumn, SmallIntColumn, SmallSerialColumn, StringColumn, TextBaseColumn, TextColumn, TimeColumn, TimestampColumn, TimestampTZColumn, TransactionAdapterClass, TsQueryColumn, TsVectorColumn, UUIDColumn, UnknownColumn, VarCharColumn, VirtualColumn, XMLColumn, _appendQuery, _appendQueryOnUpsertCreate, _clone, _createDbSqlMethod, _hookSelectColumns, _initQueryBuilder, _onUpsertUpdate, _orCreate, _prependWith, _prependWithOnUpsertCreate, _queryCreate, _queryCreateMany, _queryCreateManyFrom, _queryDefaults, _queryDelete, _queryFindBy, _queryFindByOptional, _queryHookAfterCreate, _queryHookAfterUpdate, _queryInsert, _queryInsertForEachFrom, _queryInsertMany, _queryJoinOn, _queryRows, _querySelect, _queryTake, _queryTakeOptional, _queryUpdate, _queryUpdateOrThrow, _queryUpsert, _queryWhere, _queryWhereExists, _queryWhereIn, addCode, addTopCte, addTopCteSql, applyMixins, assignDbDataToColumn, backtickQuote, cloneQueryBaseUnscoped, codeToString, colors, columnsShapeToCode, constraintInnerToCode, constraintToCode, consumeColumnName, copyTableData, createDbWithAdapter, deepCompare, defaultSchemaConfig, emptyArray, emptyObject, escapeForMigration, escapeString, excludeInnerToCode, excludeToCode, exhaustive, getCallerFilePath, getClonedQueryData, getColumnBaseType, getColumnInfo, getColumnTypes, getDateAsDateFn, getDateAsNumberFn, getDriverErrorCode, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, indexToCode, internalSchemaConfig, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, queryToSql, quoteIdentifier, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, rawSqlToSql, referencesArgsToCode, refreshMaterializedView, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, sqlToRawSql, tableDataMethods, testTransaction, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry };
|
|
14637
14641
|
|
|
14638
14642
|
//# sourceMappingURL=index.mjs.map
|