velocious 1.0.410 → 1.0.412
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/README.md +2 -0
- package/build/src/background-jobs/job-runner.js +2 -2
- package/build/src/background-jobs/store.js +3 -3
- package/build/src/background-jobs/worker.js +2 -2
- package/build/src/cli/commands/db/migrate.js +2 -2
- package/build/src/cli/commands/db/reset.js +2 -2
- package/build/src/cli/commands/db/rollback.js +2 -2
- package/build/src/cli/commands/db/tenants/check.js +2 -2
- package/build/src/cli/commands/db/tenants/migrate.js +2 -2
- package/build/src/cli/tenant-database-command-helper.js +2 -2
- package/build/src/configuration-types.d.ts +20 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +7 -1
- package/build/src/configuration.d.ts +51 -5
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +147 -15
- package/build/src/database/annotations-async-hooks.d.ts +2 -0
- package/build/src/database/annotations-async-hooks.d.ts.map +1 -0
- package/build/src/database/annotations-async-hooks.js +34 -0
- package/build/src/database/annotations.d.ts +15 -0
- package/build/src/database/annotations.d.ts.map +1 -0
- package/build/src/database/annotations.js +27 -0
- package/build/src/database/drivers/base.d.ts +106 -2
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +129 -13
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +14 -1
- package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.js +19 -1
- package/build/src/database/migrator.js +3 -3
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +23 -3
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +120 -25
- package/build/src/database/pool/base.d.ts +55 -3
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +65 -4
- package/build/src/database/pool/single-multi-use.d.ts +5 -0
- package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
- package/build/src/database/pool/single-multi-use.js +33 -9
- package/build/src/database/record/attachments/store.js +2 -2
- package/build/src/database/record/index.js +2 -2
- package/build/src/database/use-database.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/console.js +2 -6
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +2 -2
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +2 -1
- package/build/src/frontend-model-controller.js +2 -2
- package/build/src/frontend-models/websocket-channel.js +2 -2
- package/build/src/http-server/client/websocket-session.js +2 -2
- package/build/src/http-server/websocket-event-log-store.js +2 -2
- package/build/src/routes/built-in/debug/controller.d.ts +6 -0
- package/build/src/routes/built-in/debug/controller.d.ts.map +1 -0
- package/build/src/routes/built-in/debug/controller.js +9 -0
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +13 -3
- package/build/src/templates/configuration.js +1 -1
- package/build/src/testing/test-runner.js +4 -4
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations-async-hooks.d.ts","sourceRoot":"","sources":["../../../src/database/annotations-async-hooks.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
|
+
/** @type {import("node:async_hooks").AsyncLocalStorage<string[]> | undefined} */
|
|
4
|
+
let asyncLocalStorage;
|
|
5
|
+
/** @type {typeof globalThis & {velociousDatabaseAnnotations?: {getDatabaseAnnotations: () => string[], withDatabaseAnnotation: (annotation: string, callback: () => Promise<unknown>) => Promise<unknown>}}} */
|
|
6
|
+
const databaseAnnotationsGlobal = globalThis;
|
|
7
|
+
if (AsyncLocalStorage) {
|
|
8
|
+
asyncLocalStorage = new AsyncLocalStorage();
|
|
9
|
+
}
|
|
10
|
+
/** @returns {string[]} - Active database annotations for the current async context. */
|
|
11
|
+
function getDatabaseAnnotations() {
|
|
12
|
+
return asyncLocalStorage?.getStore() || [];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Runs the callback with an annotation that is appended to database query comments.
|
|
16
|
+
* @param {string} annotation - Human-readable annotation for queries executed inside the callback.
|
|
17
|
+
* @param {() => Promise<unknown>} callback - Callback to execute inside the annotation context.
|
|
18
|
+
* @returns {Promise<unknown>} - Resolves with the callback result.
|
|
19
|
+
*/
|
|
20
|
+
async function withDatabaseAnnotation(annotation, callback) {
|
|
21
|
+
if (!asyncLocalStorage)
|
|
22
|
+
return await callback();
|
|
23
|
+
const parentAnnotations = asyncLocalStorage.getStore() || [];
|
|
24
|
+
return await asyncLocalStorage.run([...parentAnnotations, annotation], async () => {
|
|
25
|
+
return await callback();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (databaseAnnotationsGlobal.velociousDatabaseAnnotations) {
|
|
29
|
+
console.warn("globalThis.velociousDatabaseAnnotations was already defined");
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
databaseAnnotationsGlobal.velociousDatabaseAnnotations = { getDatabaseAnnotations, withDatabaseAnnotation };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMtYXN5bmMtaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YWJhc2UvYW5ub3RhdGlvbnMtYXN5bmMtaG9va3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRWxELGlGQUFpRjtBQUNqRixJQUFJLGlCQUFpQixDQUFBO0FBRXJCLGdOQUFnTjtBQUNoTixNQUFNLHlCQUF5QixHQUFHLFVBQVUsQ0FBQTtBQUU1QyxJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDdEIsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFBO0FBQzdDLENBQUM7QUFFRCx1RkFBdUY7QUFDdkYsU0FBUyxzQkFBc0I7SUFDN0IsT0FBTyxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7QUFDNUMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsS0FBSyxVQUFVLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxRQUFRO0lBQ3hELElBQUksQ0FBQyxpQkFBaUI7UUFBRSxPQUFPLE1BQU0sUUFBUSxFQUFFLENBQUE7SUFFL0MsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFFNUQsT0FBTyxNQUFNLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDaEYsT0FBTyxNQUFNLFFBQVEsRUFBRSxDQUFBO0lBQ3pCLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELElBQUkseUJBQXlCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUE7QUFDN0UsQ0FBQztLQUFNLENBQUM7SUFDTix5QkFBeUIsQ0FBQyw0QkFBNEIsR0FBRyxFQUFDLHNCQUFzQixFQUFFLHNCQUFzQixFQUFDLENBQUE7QUFDM0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge0FzeW5jTG9jYWxTdG9yYWdlfSBmcm9tIFwibm9kZTphc3luY19ob29rc1wiXG5cbi8qKiBAdHlwZSB7aW1wb3J0KFwibm9kZTphc3luY19ob29rc1wiKS5Bc3luY0xvY2FsU3RvcmFnZTxzdHJpbmdbXT4gfCB1bmRlZmluZWR9ICovXG5sZXQgYXN5bmNMb2NhbFN0b3JhZ2VcblxuLyoqIEB0eXBlIHt0eXBlb2YgZ2xvYmFsVGhpcyAmIHt2ZWxvY2lvdXNEYXRhYmFzZUFubm90YXRpb25zPzoge2dldERhdGFiYXNlQW5ub3RhdGlvbnM6ICgpID0+IHN0cmluZ1tdLCB3aXRoRGF0YWJhc2VBbm5vdGF0aW9uOiAoYW5ub3RhdGlvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gUHJvbWlzZTx1bmtub3duPikgPT4gUHJvbWlzZTx1bmtub3duPn19fSAqL1xuY29uc3QgZGF0YWJhc2VBbm5vdGF0aW9uc0dsb2JhbCA9IGdsb2JhbFRoaXNcblxuaWYgKEFzeW5jTG9jYWxTdG9yYWdlKSB7XG4gIGFzeW5jTG9jYWxTdG9yYWdlID0gbmV3IEFzeW5jTG9jYWxTdG9yYWdlKClcbn1cblxuLyoqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBBY3RpdmUgZGF0YWJhc2UgYW5ub3RhdGlvbnMgZm9yIHRoZSBjdXJyZW50IGFzeW5jIGNvbnRleHQuICovXG5mdW5jdGlvbiBnZXREYXRhYmFzZUFubm90YXRpb25zKCkge1xuICByZXR1cm4gYXN5bmNMb2NhbFN0b3JhZ2U/LmdldFN0b3JlKCkgfHwgW11cbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBjYWxsYmFjayB3aXRoIGFuIGFubm90YXRpb24gdGhhdCBpcyBhcHBlbmRlZCB0byBkYXRhYmFzZSBxdWVyeSBjb21tZW50cy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhbm5vdGF0aW9uIC0gSHVtYW4tcmVhZGFibGUgYW5ub3RhdGlvbiBmb3IgcXVlcmllcyBleGVjdXRlZCBpbnNpZGUgdGhlIGNhbGxiYWNrLlxuICogQHBhcmFtIHsoKSA9PiBQcm9taXNlPHVua25vd24+fSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGV4ZWN1dGUgaW5zaWRlIHRoZSBhbm5vdGF0aW9uIGNvbnRleHQuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBjYWxsYmFjayByZXN1bHQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdpdGhEYXRhYmFzZUFubm90YXRpb24oYW5ub3RhdGlvbiwgY2FsbGJhY2spIHtcbiAgaWYgKCFhc3luY0xvY2FsU3RvcmFnZSkgcmV0dXJuIGF3YWl0IGNhbGxiYWNrKClcblxuICBjb25zdCBwYXJlbnRBbm5vdGF0aW9ucyA9IGFzeW5jTG9jYWxTdG9yYWdlLmdldFN0b3JlKCkgfHwgW11cblxuICByZXR1cm4gYXdhaXQgYXN5bmNMb2NhbFN0b3JhZ2UucnVuKFsuLi5wYXJlbnRBbm5vdGF0aW9ucywgYW5ub3RhdGlvbl0sIGFzeW5jICgpID0+IHtcbiAgICByZXR1cm4gYXdhaXQgY2FsbGJhY2soKVxuICB9KVxufVxuXG5pZiAoZGF0YWJhc2VBbm5vdGF0aW9uc0dsb2JhbC52ZWxvY2lvdXNEYXRhYmFzZUFubm90YXRpb25zKSB7XG4gIGNvbnNvbGUud2FybihcImdsb2JhbFRoaXMudmVsb2Npb3VzRGF0YWJhc2VBbm5vdGF0aW9ucyB3YXMgYWxyZWFkeSBkZWZpbmVkXCIpXG59IGVsc2Uge1xuICBkYXRhYmFzZUFubm90YXRpb25zR2xvYmFsLnZlbG9jaW91c0RhdGFiYXNlQW5ub3RhdGlvbnMgPSB7Z2V0RGF0YWJhc2VBbm5vdGF0aW9ucywgd2l0aERhdGFiYXNlQW5ub3RhdGlvbn1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type DatabaseAnnotationsRuntime = {
|
|
2
|
+
getDatabaseAnnotations?: () => string[];
|
|
3
|
+
withDatabaseAnnotation?: (annotation: string, callback: () => Promise<unknown>) => Promise<unknown>;
|
|
4
|
+
};
|
|
5
|
+
/** @returns {string[]} - Active database annotations for the current async context. */
|
|
6
|
+
export function getDatabaseAnnotations(): string[];
|
|
7
|
+
/**
|
|
8
|
+
* Runs the callback with an annotation that is appended to database query comments.
|
|
9
|
+
* @template T
|
|
10
|
+
* @param {string} annotation - Human-readable annotation for queries executed inside the callback.
|
|
11
|
+
* @param {() => Promise<T>} callback - Callback to execute inside the annotation context.
|
|
12
|
+
* @returns {Promise<T>} - Resolves with the callback result.
|
|
13
|
+
*/
|
|
14
|
+
export function withDatabaseAnnotation<T>(annotation: string, callback: () => Promise<T>): Promise<T>;
|
|
15
|
+
//# sourceMappingURL=annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../../src/database/annotations.js"],"names":[],"mappings":"yCAEc;IAAC,sBAAsB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAAC,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAC;AAI5J,uFAAuF;AACvF,0CADc,MAAM,EAAE,CAOrB;AAED;;;;;;GAMG;AACH,uCALa,CAAC,cACH,MAAM,YACN,MAAM,OAAO,CAAC,CAAC,CAAC,GACd,OAAO,CAAC,CAAC,CAAC,CAUtB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/** @typedef {{getDatabaseAnnotations?: () => string[], withDatabaseAnnotation?: (annotation: string, callback: () => Promise<unknown>) => Promise<unknown>}} DatabaseAnnotationsRuntime */
|
|
3
|
+
/** @type {typeof globalThis & {velociousDatabaseAnnotations?: DatabaseAnnotationsRuntime}} */
|
|
4
|
+
const databaseAnnotationsGlobal = globalThis;
|
|
5
|
+
/** @returns {string[]} - Active database annotations for the current async context. */
|
|
6
|
+
function getDatabaseAnnotations() {
|
|
7
|
+
const runtime = databaseAnnotationsGlobal.velociousDatabaseAnnotations;
|
|
8
|
+
if (!runtime || !runtime.getDatabaseAnnotations)
|
|
9
|
+
return [];
|
|
10
|
+
return runtime.getDatabaseAnnotations();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Runs the callback with an annotation that is appended to database query comments.
|
|
14
|
+
* @template T
|
|
15
|
+
* @param {string} annotation - Human-readable annotation for queries executed inside the callback.
|
|
16
|
+
* @param {() => Promise<T>} callback - Callback to execute inside the annotation context.
|
|
17
|
+
* @returns {Promise<T>} - Resolves with the callback result.
|
|
18
|
+
*/
|
|
19
|
+
async function withDatabaseAnnotation(annotation, callback) {
|
|
20
|
+
const runtime = databaseAnnotationsGlobal.velociousDatabaseAnnotations;
|
|
21
|
+
if (runtime && runtime.withDatabaseAnnotation) {
|
|
22
|
+
return /** @type {T} */ (await runtime.withDatabaseAnnotation(annotation, callback));
|
|
23
|
+
}
|
|
24
|
+
return await callback();
|
|
25
|
+
}
|
|
26
|
+
export { getDatabaseAnnotations, withDatabaseAnnotation };
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YWJhc2UvYW5ub3RhdGlvbnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLDJMQUEyTDtBQUMzTCw4RkFBOEY7QUFDOUYsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUE7QUFFNUMsdUZBQXVGO0FBQ3ZGLFNBQVMsc0JBQXNCO0lBQzdCLE1BQU0sT0FBTyxHQUFHLHlCQUF5QixDQUFDLDRCQUE0QixDQUFBO0lBRXRFLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFFMUQsT0FBTyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsS0FBSyxVQUFVLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxRQUFRO0lBQ3hELE1BQU0sT0FBTyxHQUFHLHlCQUF5QixDQUFDLDRCQUE0QixDQUFBO0lBRXRFLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUN0RixDQUFDO0lBRUQsT0FBTyxNQUFNLFFBQVEsRUFBRSxDQUFBO0FBQ3pCLENBQUM7QUFFRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKiogQHR5cGVkZWYge3tnZXREYXRhYmFzZUFubm90YXRpb25zPzogKCkgPT4gc3RyaW5nW10sIHdpdGhEYXRhYmFzZUFubm90YXRpb24/OiAoYW5ub3RhdGlvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gUHJvbWlzZTx1bmtub3duPikgPT4gUHJvbWlzZTx1bmtub3duPn19IERhdGFiYXNlQW5ub3RhdGlvbnNSdW50aW1lICovXG4vKiogQHR5cGUge3R5cGVvZiBnbG9iYWxUaGlzICYge3ZlbG9jaW91c0RhdGFiYXNlQW5ub3RhdGlvbnM/OiBEYXRhYmFzZUFubm90YXRpb25zUnVudGltZX19ICovXG5jb25zdCBkYXRhYmFzZUFubm90YXRpb25zR2xvYmFsID0gZ2xvYmFsVGhpc1xuXG4vKiogQHJldHVybnMge3N0cmluZ1tdfSAtIEFjdGl2ZSBkYXRhYmFzZSBhbm5vdGF0aW9ucyBmb3IgdGhlIGN1cnJlbnQgYXN5bmMgY29udGV4dC4gKi9cbmZ1bmN0aW9uIGdldERhdGFiYXNlQW5ub3RhdGlvbnMoKSB7XG4gIGNvbnN0IHJ1bnRpbWUgPSBkYXRhYmFzZUFubm90YXRpb25zR2xvYmFsLnZlbG9jaW91c0RhdGFiYXNlQW5ub3RhdGlvbnNcblxuICBpZiAoIXJ1bnRpbWUgfHwgIXJ1bnRpbWUuZ2V0RGF0YWJhc2VBbm5vdGF0aW9ucykgcmV0dXJuIFtdXG5cbiAgcmV0dXJuIHJ1bnRpbWUuZ2V0RGF0YWJhc2VBbm5vdGF0aW9ucygpXG59XG5cbi8qKlxuICogUnVucyB0aGUgY2FsbGJhY2sgd2l0aCBhbiBhbm5vdGF0aW9uIHRoYXQgaXMgYXBwZW5kZWQgdG8gZGF0YWJhc2UgcXVlcnkgY29tbWVudHMuXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHtzdHJpbmd9IGFubm90YXRpb24gLSBIdW1hbi1yZWFkYWJsZSBhbm5vdGF0aW9uIGZvciBxdWVyaWVzIGV4ZWN1dGVkIGluc2lkZSB0aGUgY2FsbGJhY2suXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8VD59IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gZXhlY3V0ZSBpbnNpZGUgdGhlIGFubm90YXRpb24gY29udGV4dC5cbiAqIEByZXR1cm5zIHtQcm9taXNlPFQ+fSAtIFJlc29sdmVzIHdpdGggdGhlIGNhbGxiYWNrIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd2l0aERhdGFiYXNlQW5ub3RhdGlvbihhbm5vdGF0aW9uLCBjYWxsYmFjaykge1xuICBjb25zdCBydW50aW1lID0gZGF0YWJhc2VBbm5vdGF0aW9uc0dsb2JhbC52ZWxvY2lvdXNEYXRhYmFzZUFubm90YXRpb25zXG5cbiAgaWYgKHJ1bnRpbWUgJiYgcnVudGltZS53aXRoRGF0YWJhc2VBbm5vdGF0aW9uKSB7XG4gICAgcmV0dXJuIC8qKiBAdHlwZSB7VH0gKi8gKGF3YWl0IHJ1bnRpbWUud2l0aERhdGFiYXNlQW5ub3RhdGlvbihhbm5vdGF0aW9uLCBjYWxsYmFjaykpXG4gIH1cblxuICByZXR1cm4gYXdhaXQgY2FsbGJhY2soKVxufVxuXG5leHBvcnQge2dldERhdGFiYXNlQW5ub3RhdGlvbnMsIHdpdGhEYXRhYmFzZUFubm90YXRpb259XG4iXX0=
|
|
@@ -12,6 +12,10 @@ export default class VelociousDatabaseDriversBase {
|
|
|
12
12
|
_schemaCache: Map<string, Promise<unknown>>;
|
|
13
13
|
/** @type {(() => void) | undefined} */
|
|
14
14
|
_schemaCacheInvalidator: (() => void) | undefined;
|
|
15
|
+
/** @type {string | undefined} */
|
|
16
|
+
_connectionCheckoutName: string | undefined;
|
|
17
|
+
/** @type {ActiveQueryState | null} */
|
|
18
|
+
_activeQuery: ActiveQueryState | null;
|
|
15
19
|
_args: import("../../configuration-types.js").DatabaseConfigurationType;
|
|
16
20
|
configuration: import("../../configuration.js").default;
|
|
17
21
|
mutex: Mutex;
|
|
@@ -43,6 +47,13 @@ export default class VelociousDatabaseDriversBase {
|
|
|
43
47
|
* @returns {Promise<void>} - Resolves when complete.
|
|
44
48
|
*/
|
|
45
49
|
close(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* @param {string | undefined} name - Human-readable name for this active checkout.
|
|
52
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
53
|
+
*/
|
|
54
|
+
setConnectionCheckoutName(name: string | undefined): Promise<void>;
|
|
55
|
+
/** @returns {Promise<void>} - Resolves when complete. */
|
|
56
|
+
clearConnectionCheckoutName(): Promise<void>;
|
|
46
57
|
/**
|
|
47
58
|
* Optional disconnect hook for database drivers.
|
|
48
59
|
* @returns {Promise<void>} - Resolves when complete.
|
|
@@ -350,13 +361,36 @@ export default class VelociousDatabaseDriversBase {
|
|
|
350
361
|
*/
|
|
351
362
|
query(sql: string, options?: QueryOptions): Promise<QueryResultType>;
|
|
352
363
|
/**
|
|
353
|
-
* @param {
|
|
364
|
+
* @param {object} args - Options object.
|
|
365
|
+
* @param {string} args.originalSql - Original SQL string before process-list comments.
|
|
366
|
+
* @param {string} args.querySql - SQL string sent to the database.
|
|
354
367
|
* @param {QueryOptions} options - Query options.
|
|
355
368
|
* @param {import("../../http-server/client/request-timing.js").default | undefined} requestTiming - Request timing.
|
|
356
369
|
* @param {number} tries - Query attempt count.
|
|
357
370
|
* @returns {Promise<QueryResultType>} - Resolves with the query.
|
|
358
371
|
*/
|
|
359
|
-
_queryActualWithLogging(
|
|
372
|
+
_queryActualWithLogging({ originalSql, querySql }: {
|
|
373
|
+
originalSql: string;
|
|
374
|
+
querySql: string;
|
|
375
|
+
}, options: QueryOptions, requestTiming: import("../../http-server/client/request-timing.js").default | undefined, tries: number): Promise<QueryResultType>;
|
|
376
|
+
/** @returns {DatabaseConnectionDebugSnapshot} - Diagnostic snapshot for this connection. */
|
|
377
|
+
getDebugSnapshot(): DatabaseConnectionDebugSnapshot;
|
|
378
|
+
/**
|
|
379
|
+
* @param {string} sql - SQL to preview.
|
|
380
|
+
* @returns {string} - Normalized truncated SQL preview for diagnostics.
|
|
381
|
+
*/
|
|
382
|
+
_debugSqlPreview(sql: string): string;
|
|
383
|
+
/**
|
|
384
|
+
* @param {string} sql - SQL string.
|
|
385
|
+
* @param {QueryOptions} options - Query options.
|
|
386
|
+
* @returns {string} - SQL string with a leading process-list comment when annotations exist.
|
|
387
|
+
*/
|
|
388
|
+
_querySqlWithProcessListComment(sql: string, options: QueryOptions): string;
|
|
389
|
+
/**
|
|
390
|
+
* @param {string} value - Raw process-list comment value.
|
|
391
|
+
* @returns {string} - Sanitized process-list comment value.
|
|
392
|
+
*/
|
|
393
|
+
_processListCommentValue(value: string): string;
|
|
360
394
|
/**
|
|
361
395
|
* @param {string} sql - SQL string.
|
|
362
396
|
* @returns {boolean} - Whether the SQL should invalidate schema metadata.
|
|
@@ -646,11 +680,81 @@ export type QueryOptions = {
|
|
|
646
680
|
* - Whether to log the query.
|
|
647
681
|
*/
|
|
648
682
|
logQuery?: boolean | undefined;
|
|
683
|
+
/**
|
|
684
|
+
* - Whether to add process-list comments to the query.
|
|
685
|
+
*/
|
|
686
|
+
processListComment?: boolean | undefined;
|
|
649
687
|
/**
|
|
650
688
|
* - Stack captured at the caller boundary.
|
|
651
689
|
*/
|
|
652
690
|
sourceStack?: string | undefined;
|
|
653
691
|
};
|
|
692
|
+
export type ActiveQueryDebugSnapshot = {
|
|
693
|
+
/**
|
|
694
|
+
* - Database annotations active when the query started.
|
|
695
|
+
*/
|
|
696
|
+
annotations: string[];
|
|
697
|
+
/**
|
|
698
|
+
* - Query log name.
|
|
699
|
+
*/
|
|
700
|
+
logName: string;
|
|
701
|
+
/**
|
|
702
|
+
* - Query start timestamp.
|
|
703
|
+
*/
|
|
704
|
+
startedAtUnixMs: number;
|
|
705
|
+
/**
|
|
706
|
+
* - Query runtime in milliseconds.
|
|
707
|
+
*/
|
|
708
|
+
runningMs: number;
|
|
709
|
+
/**
|
|
710
|
+
* - Truncated SQL preview.
|
|
711
|
+
*/
|
|
712
|
+
sqlPreview: string;
|
|
713
|
+
};
|
|
714
|
+
export type DatabaseConnectionDebugSnapshot = {
|
|
715
|
+
/**
|
|
716
|
+
* - Currently running query, if any.
|
|
717
|
+
*/
|
|
718
|
+
activeQuery: ActiveQueryDebugSnapshot | null;
|
|
719
|
+
/**
|
|
720
|
+
* - Human-readable checkout name.
|
|
721
|
+
*/
|
|
722
|
+
checkoutName: string | undefined;
|
|
723
|
+
/**
|
|
724
|
+
* - Driver class name.
|
|
725
|
+
*/
|
|
726
|
+
driverClass: string;
|
|
727
|
+
/**
|
|
728
|
+
* - Pool checkout ID sequence.
|
|
729
|
+
*/
|
|
730
|
+
idSeq: number | undefined;
|
|
731
|
+
/**
|
|
732
|
+
* - Number of open transaction frames.
|
|
733
|
+
*/
|
|
734
|
+
openTransactions: number;
|
|
735
|
+
/**
|
|
736
|
+
* - Number of cached schema metadata entries.
|
|
737
|
+
*/
|
|
738
|
+
schemaCacheEntries: number;
|
|
739
|
+
};
|
|
740
|
+
export type ActiveQueryState = {
|
|
741
|
+
/**
|
|
742
|
+
* - Database annotations active when the query started.
|
|
743
|
+
*/
|
|
744
|
+
annotations: string[];
|
|
745
|
+
/**
|
|
746
|
+
* - Query log name.
|
|
747
|
+
*/
|
|
748
|
+
logName: string;
|
|
749
|
+
/**
|
|
750
|
+
* - Query start timestamp.
|
|
751
|
+
*/
|
|
752
|
+
startedAtUnixMs: number;
|
|
753
|
+
/**
|
|
754
|
+
* - Truncated SQL preview.
|
|
755
|
+
*/
|
|
756
|
+
sqlPreview: string;
|
|
757
|
+
};
|
|
654
758
|
export type UpdateSqlArgsType = {
|
|
655
759
|
/**
|
|
656
760
|
* - Conditions used to build the update WHERE clause.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/database/drivers/base.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/database/drivers/base.js"],"names":[],"mappings":"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"}
|