@dbos-inc/dbos-sdk 3.4.6-preview → 3.4.7-preview
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/src/client.d.ts.map +1 -1
- package/dist/src/client.js +2 -3
- package/dist/src/client.js.map +1 -1
- package/dist/src/database_utils.d.ts +99 -0
- package/dist/src/database_utils.d.ts.map +1 -0
- package/dist/src/database_utils.js +428 -0
- package/dist/src/database_utils.js.map +1 -0
- package/dist/src/datasource.d.ts +1 -1
- package/dist/src/datasource.d.ts.map +1 -1
- package/dist/src/datasource.js +10 -1
- package/dist/src/datasource.js.map +1 -1
- package/dist/src/dbos-executor.d.ts.map +1 -1
- package/dist/src/dbos-executor.js +15 -4
- package/dist/src/dbos-executor.js.map +1 -1
- package/dist/src/dbos-runtime/cli.d.ts.map +1 -1
- package/dist/src/dbos-runtime/cli.js +128 -95
- package/dist/src/dbos-runtime/cli.js.map +1 -1
- package/dist/src/dbos-runtime/commands.d.ts +1 -1
- package/dist/src/dbos-runtime/commands.d.ts.map +1 -1
- package/dist/src/dbos-runtime/commands.js +1 -2
- package/dist/src/dbos-runtime/commands.js.map +1 -1
- package/dist/src/dbos-runtime/config.d.ts +5 -2
- package/dist/src/dbos-runtime/config.d.ts.map +1 -1
- package/dist/src/dbos-runtime/config.js +48 -25
- package/dist/src/dbos-runtime/config.js.map +1 -1
- package/dist/src/dbos-runtime/migrate.d.ts +1 -2
- package/dist/src/dbos-runtime/migrate.d.ts.map +1 -1
- package/dist/src/dbos-runtime/migrate.js +28 -99
- package/dist/src/dbos-runtime/migrate.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/sysdb_migrations/internal/migrations.d.ts +3 -0
- package/dist/src/sysdb_migrations/internal/migrations.d.ts.map +1 -0
- package/dist/src/sysdb_migrations/internal/migrations.js +174 -0
- package/dist/src/sysdb_migrations/internal/migrations.js.map +1 -0
- package/dist/src/sysdb_migrations/migration_runner.d.ts +27 -0
- package/dist/src/sysdb_migrations/migration_runner.d.ts.map +1 -0
- package/dist/src/sysdb_migrations/migration_runner.js +117 -0
- package/dist/src/sysdb_migrations/migration_runner.js.map +1 -0
- package/dist/src/system_database.d.ts +4 -4
- package/dist/src/system_database.d.ts.map +1 -1
- package/dist/src/system_database.js +71 -73
- package/dist/src/system_database.js.map +1 -1
- package/dist/src/user_database.d.ts +1 -2
- package/dist/src/user_database.d.ts.map +1 -1
- package/dist/src/user_database.js +23 -33
- package/dist/src/user_database.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -2
- package/dist/src/dbos-runtime/reset.d.ts +0 -4
- package/dist/src/dbos-runtime/reset.d.ts.map +0 -1
- package/dist/src/dbos-runtime/reset.js +0 -26
- package/dist/src/dbos-runtime/reset.js.map +0 -1
- package/migrations/20240123182943_schema.js +0 -7
- package/migrations/20240123183021_tables.js +0 -52
- package/migrations/20240123183025_indexes.js +0 -11
- package/migrations/20240123183030_triggers.js +0 -38
- package/migrations/20240124015239_status_timestamp.js +0 -16
- package/migrations/20240201213211_replica_identity.js +0 -12
- package/migrations/20240205223925_foreign_keys.js +0 -67
- package/migrations/20240207192338_executor_id_index.js +0 -19
- package/migrations/20240430090000_tables.js +0 -11
- package/migrations/20240516004341_application_version.js +0 -21
- package/migrations/20240517000000_status_class_config.js +0 -14
- package/migrations/20240621000000_workflow_tries.js +0 -11
- package/migrations/20240924000000_workflowqueue.js +0 -33
- package/migrations/20241009150000_event_dispatch_kv.js +0 -15
- package/migrations/20250312171547_function_name_op_outputs.js +0 -22
- package/migrations/20250319190617_add_childid_opoutputs.js +0 -22
- package/migrations/20252101000000_workflow_queues_executor_id.js +0 -27
- package/migrations/20252501190959_queue_dedup_id.js +0 -21
- package/migrations/20252505000000_workflow_timeout.js +0 -24
- package/migrations/20252512000000_queue_priority.js +0 -22
- package/migrations/20252523000000_consolidate_inputs.js +0 -22
- package/migrations/20252528000000_consolidate_queues.js +0 -30
- package/migrations/20252806000000_streaming.js +0 -30
package/dist/src/client.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EAGtB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAgBpB;;;GAGG;AACH,UAAU,oBAAoB;IAC5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAErD,QAAQ,CAAC,cAAc,EAAE,cAAc;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM;gBADpB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,MAAM;IAG/B,eAAe,IAAI,MAAM;IAIzB,IAAI,UAAU,IAAI,MAAM,CAEvB;IAEK,SAAS,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAK3C,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC;IAQvB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;CAI3D;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IAExD,OAAO;IAYP;;;;;OAKG;WACU,MAAM,CAAC,EAClB,WAAW,EACX,iBAAiB,GAClB,EAAE;QACD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,UAAU,CAAC;
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/client.js
CHANGED
@@ -55,7 +55,7 @@ class DBOSClient {
|
|
55
55
|
constructor(databaseUrl, systemDatabaseUrl) {
|
56
56
|
if (!systemDatabaseUrl) {
|
57
57
|
(0, node_assert_1.default)(databaseUrl, 'At least one of databaseUrl or systemDatabaseUrl must be provided');
|
58
|
-
systemDatabaseUrl = (0, config_1.
|
58
|
+
systemDatabaseUrl = (0, config_1.getSysDatabaseUrlFromUserDb)(databaseUrl);
|
59
59
|
}
|
60
60
|
this.logger = new logs_1.GlobalLogger();
|
61
61
|
this.systemDatabase = new system_database_1.PostgresSystemDatabase(systemDatabaseUrl, this.logger);
|
@@ -69,8 +69,7 @@ class DBOSClient {
|
|
69
69
|
*/
|
70
70
|
static async create({ databaseUrl, systemDatabaseUrl, }) {
|
71
71
|
const client = new DBOSClient(databaseUrl, systemDatabaseUrl);
|
72
|
-
|
73
|
-
return client;
|
72
|
+
return Promise.resolve(client);
|
74
73
|
}
|
75
74
|
/**
|
76
75
|
* Destroys the underlying database connection.
|
package/dist/src/client.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;;;;AAAA,uDAK2B;AAE3B,2CAAgD;AAChD,6CAAyC;AACzC,yCAQoB;AACpB,mCAA6D;AAC7D,4EAO4C;AAC5C,mDAAwE;AACxE,
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import { Client } from 'pg';
|
2
|
+
/**
|
3
|
+
* The logical thing to provide is the name of the DB to drop (`dbToDrop`) and a connection string with permission (`adminUrl`)
|
4
|
+
* However, you can specify `urlToDrop` and we will do our best to find a way to connect and drop it.
|
5
|
+
*/
|
6
|
+
export interface DropDatabaseOptions {
|
7
|
+
/** Name of the database to drop */
|
8
|
+
dbToDrop?: string;
|
9
|
+
/** URL of the database to drop */
|
10
|
+
urlToDrop?: string;
|
11
|
+
/** Admin/alternate DB URL on the same server. If omitted, we'll try `<urlToDrop but with /postgres>` */
|
12
|
+
adminUrl?: string;
|
13
|
+
/** Optional logger (default: console.log) */
|
14
|
+
logger?: (msg: string) => void;
|
15
|
+
/** Also try /template1 if /postgres fails (default: true) */
|
16
|
+
tryTemplate1Fallback?: boolean;
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* Result of a `dropPostgresDatabase` call.
|
20
|
+
* Status of `dropped` or `did_not_exist` is a "success",
|
21
|
+
* from the perspective that we are completely sure the DB is not there at the end.
|
22
|
+
* Status of `failed` means that the DB still exists, or we cannot say.
|
23
|
+
* This means "failure" in the sense that the postcondition of a nonexistent DB is not verified.
|
24
|
+
*/
|
25
|
+
export type DropDatabaseResult = {
|
26
|
+
status: 'dropped' | 'did_not_exist';
|
27
|
+
notes: string[];
|
28
|
+
message: string;
|
29
|
+
} | {
|
30
|
+
status: 'failed';
|
31
|
+
notes: string[];
|
32
|
+
hint?: string;
|
33
|
+
message: string;
|
34
|
+
};
|
35
|
+
/**
|
36
|
+
* Drop a postgres database from a postgres server. This requires a target DB name,
|
37
|
+
* and a way to connect to its server with privileges to issue the drop. See `opts`.
|
38
|
+
* Environment variables are not currently considered.
|
39
|
+
*
|
40
|
+
* @param opts - Options for connecting to DB and issuing the drop
|
41
|
+
* @returns `DropDatabaseResult` indicating success, failures, and any notes or hints
|
42
|
+
*/
|
43
|
+
export declare function dropPGDatabase(opts?: DropDatabaseOptions): Promise<DropDatabaseResult>;
|
44
|
+
/**
|
45
|
+
* Result of a `ensurePGDatabase` call.
|
46
|
+
* Status of `created` or `already_exists` is a "success",
|
47
|
+
* from the perspective that we are completely sure the DB is there at the end.
|
48
|
+
* Status of `failed` means that the DB still doesn't exist, or we cannot say.
|
49
|
+
* This is a "failure" from the sense that the postcondition of an existing DB is not verified.
|
50
|
+
*/
|
51
|
+
export type EnsureDatabaseResult = {
|
52
|
+
status: 'created' | 'already_exists';
|
53
|
+
message: string;
|
54
|
+
notes: string[];
|
55
|
+
} | {
|
56
|
+
status: 'failed';
|
57
|
+
notes: string[];
|
58
|
+
message: string;
|
59
|
+
hint?: string;
|
60
|
+
};
|
61
|
+
/**
|
62
|
+
* The logical thing to provide is the name of the DB to ensure (`dbToEnsure`) and a connection string with permission (`adminUrl`)
|
63
|
+
* However, you can specify `urlToEnsure` and we will do our best to find a way to connect and ensure it.
|
64
|
+
*/
|
65
|
+
export interface EnsureDatabaseOptions {
|
66
|
+
/** Name of the database to ensure */
|
67
|
+
dbToEnsure?: string;
|
68
|
+
/** URL of the database to ensure */
|
69
|
+
urlToEnsure?: string;
|
70
|
+
/** Admin/alternate DB URL on the same server. If omitted, we'll try `<urlToEnsure but with /postgres>` */
|
71
|
+
adminUrl?: string;
|
72
|
+
/** Optional logger (default: console.log) */
|
73
|
+
logger?: (msg: string) => void;
|
74
|
+
/** Also try /template1 if /postgres fails (default: true) */
|
75
|
+
tryTemplate1Fallback?: boolean;
|
76
|
+
}
|
77
|
+
export declare function ensurePGDatabase(opts: EnsureDatabaseOptions): Promise<EnsureDatabaseResult>;
|
78
|
+
export declare function deriveDatabaseUrl(urlStr: string, otherDbName: string): string;
|
79
|
+
export declare function getPGClientConfig(databaseUrl: string | URL): {
|
80
|
+
connectionString: string;
|
81
|
+
connectionTimeoutMillis: number;
|
82
|
+
};
|
83
|
+
export declare function getDatabaseNameFromUrl(urlStr: string): string;
|
84
|
+
export declare function maskDatabaseUrl(urlStr: string): string;
|
85
|
+
export declare function connectToPGDatabase(url: string, log: (m: string) => void): Promise<Client | null>;
|
86
|
+
export declare function connectToPGAndReportOutcome(url: string, log: (m: string) => void, label: string): Promise<{
|
87
|
+
result: 'ok';
|
88
|
+
client: Client;
|
89
|
+
} | {
|
90
|
+
result: 'error';
|
91
|
+
code?: string;
|
92
|
+
message: string;
|
93
|
+
}>;
|
94
|
+
export declare function currentDBUserIdentity(client: Client): Promise<{
|
95
|
+
user: string;
|
96
|
+
isSuperuser: boolean;
|
97
|
+
}>;
|
98
|
+
export declare function getPGDatabaseOwner(admin: Client, dbName: string): Promise<string | null>;
|
99
|
+
//# sourceMappingURL=database_utils.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"database_utils.d.ts","sourceRoot":"","sources":["../../src/database_utils.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,428 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getPGDatabaseOwner = exports.currentDBUserIdentity = exports.connectToPGAndReportOutcome = exports.connectToPGDatabase = exports.maskDatabaseUrl = exports.getDatabaseNameFromUrl = exports.getPGClientConfig = exports.deriveDatabaseUrl = exports.ensurePGDatabase = exports.dropPGDatabase = void 0;
|
4
|
+
const pg_1 = require("pg");
|
5
|
+
/**
|
6
|
+
* Drop a postgres database from a postgres server. This requires a target DB name,
|
7
|
+
* and a way to connect to its server with privileges to issue the drop. See `opts`.
|
8
|
+
* Environment variables are not currently considered.
|
9
|
+
*
|
10
|
+
* @param opts - Options for connecting to DB and issuing the drop
|
11
|
+
* @returns `DropDatabaseResult` indicating success, failures, and any notes or hints
|
12
|
+
*/
|
13
|
+
async function dropPGDatabase(opts = {}) {
|
14
|
+
if (!opts.urlToDrop && !opts.dbToDrop) {
|
15
|
+
throw new TypeError(`dropPGDatabase requires a target database name or URL to DROP`);
|
16
|
+
}
|
17
|
+
const notes = [];
|
18
|
+
const log = (msg) => {
|
19
|
+
notes.push(msg);
|
20
|
+
(opts.logger ?? console.log)(msg);
|
21
|
+
};
|
22
|
+
function fail(msg, hint) {
|
23
|
+
log(`FAIL: ${msg}${hint ? ` | HINT: ${hint}` : ''}`);
|
24
|
+
return { message: msg, status: 'failed', notes, hint };
|
25
|
+
}
|
26
|
+
const adminUrl = opts.adminUrl ?? (opts.urlToDrop ? deriveDatabaseUrl(opts.urlToDrop, 'postgres') : undefined);
|
27
|
+
if (!adminUrl) {
|
28
|
+
// We could consider the environment, but let's not right now.
|
29
|
+
throw new TypeError(`dropPostgresDatabase requires a connection string to a database with permission to perform the DROP`);
|
30
|
+
}
|
31
|
+
const maybeTemplate1Url = deriveDatabaseUrl(opts.urlToDrop ?? adminUrl, 'template1');
|
32
|
+
const tryTemplate1Fallback = opts.tryTemplate1Fallback ?? true;
|
33
|
+
const targetDb = opts.dbToDrop ?? getDatabaseNameFromUrl(opts.urlToDrop);
|
34
|
+
if (!targetDb) {
|
35
|
+
return fail('Target URL has no database name in the path (e.g., /mydb).', 'Fix the target URL and retry.');
|
36
|
+
}
|
37
|
+
log(`Target DB to drop: ${targetDb}`);
|
38
|
+
log(`Admin URL (planned): ${maskDatabaseUrl(adminUrl)}`);
|
39
|
+
// 1) Try admin connection first (best detection for existence & privileges)
|
40
|
+
let admin = await connectToPGDatabase(adminUrl, log);
|
41
|
+
if (!admin && tryTemplate1Fallback) {
|
42
|
+
log(`Admin connect failed. Trying template1 as a fallback...`);
|
43
|
+
admin = await connectToPGDatabase(maybeTemplate1Url, log);
|
44
|
+
}
|
45
|
+
// Helper to check DB existence via catalog (requires admin connection)
|
46
|
+
const checkExistsViaAdmin = async () => {
|
47
|
+
if (!admin)
|
48
|
+
return 'unknown';
|
49
|
+
const { rows } = await admin.query(`SELECT EXISTS (SELECT 1 FROM pg_database WHERE datname = $1) AS exists`, [targetDb]);
|
50
|
+
return rows[0]?.exists ?? false;
|
51
|
+
};
|
52
|
+
try {
|
53
|
+
// If admin connected, see if the DB exists; if not, this is an early success.
|
54
|
+
let exists = 'unknown';
|
55
|
+
if (admin) {
|
56
|
+
exists = await checkExistsViaAdmin();
|
57
|
+
if (exists === false) {
|
58
|
+
log(`DB "${targetDb}" does not exist (confirmed via catalog).`);
|
59
|
+
return { status: 'did_not_exist', notes, message: 'Success (already dropped)' };
|
60
|
+
}
|
61
|
+
}
|
62
|
+
// If we couldn't connect as admin, try connecting to target to distinguish "doesn't exist" from failure to connect.
|
63
|
+
if (!admin) {
|
64
|
+
const probe = await connectToPGAndReportOutcome(opts.urlToDrop ?? deriveDatabaseUrl(adminUrl, targetDb), log, 'probe target (existence test)');
|
65
|
+
if (probe.result === 'ok') {
|
66
|
+
// We can reach the target DB—so it exists—but we’re connected *to* it; we cannot DROP from within.
|
67
|
+
await probe.client.end().catch(() => { });
|
68
|
+
return fail(`Database "${targetDb}" exists, but we could not establish an admin connection to drop it.`, `Provide an admin/alternate DB URL (same server) with privileges to DROP DATABASE`);
|
69
|
+
}
|
70
|
+
else if (probe.code === '3D000') {
|
71
|
+
log(`DB "${targetDb}" does not exist (error 3D000 while connecting). Database already does not exist.`);
|
72
|
+
return { status: 'did_not_exist', notes, message: 'Success (already dropped)' };
|
73
|
+
}
|
74
|
+
else {
|
75
|
+
// Ambiguous: not proven missing, no admin path to check or drop.
|
76
|
+
return fail(`Could not establish any admin connection, and target connect failed with ${probe.code ?? probe.result}.`, networkOrAuthHint(probe.code));
|
77
|
+
}
|
78
|
+
}
|
79
|
+
// 2) We have an admin connection and the DB likely exists. Check privileges upfront (nice error).
|
80
|
+
const who = await currentDBUserIdentity(admin);
|
81
|
+
const owner = await getPGDatabaseOwner(admin, targetDb);
|
82
|
+
if (!who.isSuperuser && owner && owner !== who.user) {
|
83
|
+
log(`Ownership check: DB owned by "${owner}", current_user is "${who.user}" (superuser=${who.isSuperuser}).`);
|
84
|
+
// We can still try (maybe you have sufficient rights via membership), but warn early.
|
85
|
+
log(`Warning: You might lack privileges to DROP this database unless you are the owner or superuser.`);
|
86
|
+
}
|
87
|
+
// 3) Attempt the drop
|
88
|
+
try {
|
89
|
+
log(`Attempting DROP ... WITH (FORCE).`);
|
90
|
+
await dropWithForce(admin, targetDb);
|
91
|
+
}
|
92
|
+
catch (err) {
|
93
|
+
const e = err;
|
94
|
+
// If FORCE path failed due to syntax (older server), fallback once.
|
95
|
+
if (isForceSyntaxError(e)) {
|
96
|
+
log(`WITH (FORCE) not supported by server (syntax error). Falling back to terminate-and-drop.`);
|
97
|
+
try {
|
98
|
+
await terminateAndDrop(admin, targetDb, 3000, log);
|
99
|
+
}
|
100
|
+
catch (err2) {
|
101
|
+
const e2 = err2;
|
102
|
+
await admin.end().catch(() => { });
|
103
|
+
return fail(`Drop failed even after fallback: ${shortenErr(e2)}`, createDropHintFromSqlState(e2?.code));
|
104
|
+
}
|
105
|
+
}
|
106
|
+
else {
|
107
|
+
await admin.end().catch(() => { });
|
108
|
+
return fail(`Drop failed: ${shortenErr(e)}`, createDropHintFromSqlState(e?.code));
|
109
|
+
}
|
110
|
+
}
|
111
|
+
// 4) Verify postcondition
|
112
|
+
const finalExists = await checkExistsViaAdmin();
|
113
|
+
if (finalExists === false) {
|
114
|
+
log(`Verified: database "${targetDb}" is gone.`);
|
115
|
+
return { status: 'dropped', notes, message: 'Success (dropped)' };
|
116
|
+
}
|
117
|
+
else if (finalExists === true) {
|
118
|
+
return fail(`After drop attempt, database "${targetDb}" still exists.`, `Terminate all sessions and retry.`);
|
119
|
+
}
|
120
|
+
else {
|
121
|
+
// Unknown (shouldn't happen with admin connected)
|
122
|
+
log(`Could not verify drop due to unexpected state.`);
|
123
|
+
return { status: 'dropped', notes, message: 'Success (dropped)' }; // we did our best; treat as success if we didn't see errors
|
124
|
+
}
|
125
|
+
}
|
126
|
+
finally {
|
127
|
+
await admin?.end().catch(() => { });
|
128
|
+
}
|
129
|
+
}
|
130
|
+
exports.dropPGDatabase = dropPGDatabase;
|
131
|
+
async function ensurePGDatabase(opts) {
|
132
|
+
if (!opts.urlToEnsure && !opts.dbToEnsure) {
|
133
|
+
throw new TypeError(`ensurePGDatabase requires a target database name or URL to check`);
|
134
|
+
}
|
135
|
+
const notes = [];
|
136
|
+
const log = (msg) => {
|
137
|
+
notes.push(msg);
|
138
|
+
(opts.logger ?? console.log)(msg);
|
139
|
+
};
|
140
|
+
function fail(msg, hint) {
|
141
|
+
log(`FAIL: ${msg}${hint ? ` | HINT: ${hint}` : ''}`);
|
142
|
+
return { status: 'failed', notes, hint, message: msg };
|
143
|
+
}
|
144
|
+
const targetDb = opts.dbToEnsure ?? getDatabaseNameFromUrl(opts.urlToEnsure);
|
145
|
+
if (!targetDb) {
|
146
|
+
return fail('Target URL has no database name in the path (e.g., /mydb).', 'Fix the target URL and retry.');
|
147
|
+
}
|
148
|
+
// Try a quick connect attempt first; this requires the least assumptions and has the least chance of messing us up.
|
149
|
+
if (opts.urlToEnsure) {
|
150
|
+
try {
|
151
|
+
const probe = await connectToPGAndReportOutcome(opts.urlToEnsure, log, 'probe target (existence test)');
|
152
|
+
if (probe.result === 'ok') {
|
153
|
+
// We can reach the target DB, do nothing
|
154
|
+
await probe.client.end().catch(() => { });
|
155
|
+
return { status: 'already_exists', notes, message: 'Success (already existed)' };
|
156
|
+
}
|
157
|
+
}
|
158
|
+
catch (e) {
|
159
|
+
log(`Caught error probing database: (e as Error).message; attempting create.`);
|
160
|
+
}
|
161
|
+
}
|
162
|
+
// At this point, we know we need an admin URL, if only as a base of the real URL
|
163
|
+
const adminUrl = opts.adminUrl ?? (opts.urlToEnsure ? deriveDatabaseUrl(opts.urlToEnsure, 'postgres') : undefined);
|
164
|
+
if (!adminUrl) {
|
165
|
+
// We could consider the environment, but let's not right now.
|
166
|
+
throw new TypeError(`dropPostgresDatabase requires a connection string to a database with permission to perform the DROP`);
|
167
|
+
}
|
168
|
+
const maybeTemplate1Url = deriveDatabaseUrl(opts.urlToEnsure ?? adminUrl, 'template1');
|
169
|
+
const tryTemplate1Fallback = opts.tryTemplate1Fallback ?? true;
|
170
|
+
// 1) Try admin connection first (best detection for existence & privileges)
|
171
|
+
let admin = await connectToPGDatabase(adminUrl, log);
|
172
|
+
if (!admin && tryTemplate1Fallback) {
|
173
|
+
log(`Admin connect failed. Trying template1 as a fallback...`);
|
174
|
+
admin = await connectToPGDatabase(maybeTemplate1Url, log);
|
175
|
+
}
|
176
|
+
// Helper to check DB existence via catalog (requires admin connection)
|
177
|
+
const checkExistsViaAdmin = async () => {
|
178
|
+
if (!admin)
|
179
|
+
return 'unknown';
|
180
|
+
const { rows } = await admin.query(`SELECT EXISTS (SELECT 1 FROM pg_database WHERE datname = $1) AS exists`, [targetDb]);
|
181
|
+
return rows[0]?.exists ?? false;
|
182
|
+
};
|
183
|
+
try {
|
184
|
+
// If admin connected, see if the DB exists; if so, this is an early success.
|
185
|
+
let exists = 'unknown';
|
186
|
+
if (admin) {
|
187
|
+
exists = await checkExistsViaAdmin();
|
188
|
+
if (exists === true) {
|
189
|
+
log(`DB "${targetDb}" exists (confirmed via catalog).`);
|
190
|
+
return { status: 'already_exists', notes, message: 'Success (already existed)' };
|
191
|
+
}
|
192
|
+
}
|
193
|
+
// If we couldn't connect as admin, try connecting to target to distinguish "doesn't exist" from failure to connect.
|
194
|
+
if (!admin) {
|
195
|
+
const dbUrl = opts.urlToEnsure ?? deriveDatabaseUrl(adminUrl, targetDb);
|
196
|
+
const probe = await connectToPGAndReportOutcome(dbUrl, log, 'probe target (existence test)');
|
197
|
+
if (probe.result === 'ok') {
|
198
|
+
// We can reach the target DB.... via a URL derived from admin
|
199
|
+
await probe.client.end().catch(() => { });
|
200
|
+
log(`Probe of database ${targetDb} via ${maskDatabaseUrl(dbUrl)} succeeds.`);
|
201
|
+
return { status: 'already_exists', notes, message: 'Success (already existed)' };
|
202
|
+
}
|
203
|
+
else {
|
204
|
+
// Ambiguous: We do not know it to be there, and we can't make an admin connection to proceed.
|
205
|
+
return fail(`Could not establish any admin connection, and target connect failed with ${probe.code ?? probe.result}.`, networkOrAuthHint(probe.code));
|
206
|
+
}
|
207
|
+
}
|
208
|
+
// 3) Attempt the CREATE
|
209
|
+
try {
|
210
|
+
log(`Attempting CREATE.`);
|
211
|
+
await createDb(admin, targetDb);
|
212
|
+
}
|
213
|
+
catch (err) {
|
214
|
+
const e = err;
|
215
|
+
await admin.end().catch(() => { });
|
216
|
+
return fail(`Create failed: ${shortenErr(e)}`, createDropHintFromSqlState(e?.code));
|
217
|
+
}
|
218
|
+
// 4) Verify postcondition
|
219
|
+
const finalExists = await checkExistsViaAdmin();
|
220
|
+
if (finalExists === true) {
|
221
|
+
log(`Verified: database "${targetDb}" exists.`);
|
222
|
+
return { status: 'created', notes, message: 'Success (created)' };
|
223
|
+
}
|
224
|
+
else if (finalExists === false) {
|
225
|
+
return fail(`After create attempt, database "${targetDb}" does not exist still.`);
|
226
|
+
}
|
227
|
+
else {
|
228
|
+
// Unknown (shouldn't happen with admin connected)
|
229
|
+
log(`Could not verify creation due to unexpected state.`);
|
230
|
+
return { status: 'created', notes, message: 'Success (unverified)' };
|
231
|
+
}
|
232
|
+
}
|
233
|
+
finally {
|
234
|
+
await admin?.end().catch(() => { });
|
235
|
+
}
|
236
|
+
}
|
237
|
+
exports.ensurePGDatabase = ensurePGDatabase;
|
238
|
+
function deriveDatabaseUrl(urlStr, otherDbName) {
|
239
|
+
try {
|
240
|
+
const u = new URL(urlStr);
|
241
|
+
u.pathname = `/${otherDbName}`;
|
242
|
+
return u.toString();
|
243
|
+
}
|
244
|
+
catch {
|
245
|
+
return urlStr; // best effort; connect will fail with clear message
|
246
|
+
}
|
247
|
+
}
|
248
|
+
exports.deriveDatabaseUrl = deriveDatabaseUrl;
|
249
|
+
// The `pg` package we use does not parse the connect_timeout parameter, so we need to handle it ourselves.
|
250
|
+
function getPGClientConfig(databaseUrl) {
|
251
|
+
const connectionString = typeof databaseUrl === 'string' ? databaseUrl : databaseUrl.toString();
|
252
|
+
const timeout = getTimeout(typeof databaseUrl === 'string' ? new URL(databaseUrl) : databaseUrl);
|
253
|
+
return {
|
254
|
+
connectionString,
|
255
|
+
connectionTimeoutMillis: timeout ? timeout * 1000 : 10000,
|
256
|
+
};
|
257
|
+
function getTimeout(url) {
|
258
|
+
try {
|
259
|
+
const $timeout = url.searchParams.get('connect_timeout');
|
260
|
+
return $timeout ? parseInt($timeout, 10) : undefined;
|
261
|
+
}
|
262
|
+
catch {
|
263
|
+
// Ignore errors in parsing the connect_timeout parameter
|
264
|
+
return undefined;
|
265
|
+
}
|
266
|
+
}
|
267
|
+
}
|
268
|
+
exports.getPGClientConfig = getPGClientConfig;
|
269
|
+
function getDatabaseNameFromUrl(urlStr) {
|
270
|
+
const u = new URL(urlStr);
|
271
|
+
return u.pathname?.replace(/^\//, '') || '';
|
272
|
+
}
|
273
|
+
exports.getDatabaseNameFromUrl = getDatabaseNameFromUrl;
|
274
|
+
function maskDatabaseUrl(urlStr) {
|
275
|
+
try {
|
276
|
+
const u = new URL(urlStr);
|
277
|
+
if (u.password) {
|
278
|
+
const p = decodeURIComponent(u.password);
|
279
|
+
const masked = p.length <= 2 ? p : `${p[0]}${'*'.repeat(p.length - 2)}${p[p.length - 1]}`;
|
280
|
+
u.password = encodeURIComponent(masked);
|
281
|
+
}
|
282
|
+
return u.toString();
|
283
|
+
}
|
284
|
+
catch {
|
285
|
+
return urlStr;
|
286
|
+
}
|
287
|
+
}
|
288
|
+
exports.maskDatabaseUrl = maskDatabaseUrl;
|
289
|
+
async function connectToPGDatabase(url, log) {
|
290
|
+
log(`Connecting: ${maskDatabaseUrl(url)}`);
|
291
|
+
const client = new pg_1.Client(getPGClientConfig(url));
|
292
|
+
try {
|
293
|
+
await client.connect();
|
294
|
+
return client;
|
295
|
+
}
|
296
|
+
catch (err) {
|
297
|
+
const e = err;
|
298
|
+
log(`Connect failed: ${shortenErr(e)}${e?.code ? ` (code ${e.code})` : ''}`);
|
299
|
+
try {
|
300
|
+
await client.end();
|
301
|
+
}
|
302
|
+
catch { }
|
303
|
+
return null;
|
304
|
+
}
|
305
|
+
}
|
306
|
+
exports.connectToPGDatabase = connectToPGDatabase;
|
307
|
+
async function connectToPGAndReportOutcome(url, log, label) {
|
308
|
+
log(`Connecting to ${label}: ${maskDatabaseUrl(url)}`);
|
309
|
+
const client = new pg_1.Client(getPGClientConfig(url));
|
310
|
+
try {
|
311
|
+
await client.connect();
|
312
|
+
return { result: 'ok', client };
|
313
|
+
}
|
314
|
+
catch (err) {
|
315
|
+
const e = err;
|
316
|
+
try {
|
317
|
+
await client.end();
|
318
|
+
}
|
319
|
+
catch { }
|
320
|
+
return { result: 'error', code: e?.code, message: e?.message ?? String(e) };
|
321
|
+
}
|
322
|
+
}
|
323
|
+
exports.connectToPGAndReportOutcome = connectToPGAndReportOutcome;
|
324
|
+
function shortenErr(e) {
|
325
|
+
const m = e?.message ?? String(e);
|
326
|
+
return m.length > 500 ? `${m.slice(0, 500)}…` : m;
|
327
|
+
}
|
328
|
+
async function currentDBUserIdentity(client) {
|
329
|
+
const { rows: userRows } = await client.query(`SELECT current_user AS user`);
|
330
|
+
const user = userRows[0]?.user ?? '';
|
331
|
+
const { rows: roleRows } = await client.query(`SELECT rolsuper FROM pg_roles WHERE rolname = current_user`);
|
332
|
+
return { user, isSuperuser: !!roleRows[0]?.rolsuper };
|
333
|
+
}
|
334
|
+
exports.currentDBUserIdentity = currentDBUserIdentity;
|
335
|
+
async function getPGDatabaseOwner(admin, dbName) {
|
336
|
+
const { rows } = await admin.query(`SELECT r.rolname AS owner
|
337
|
+
FROM pg_database d JOIN pg_roles r ON r.oid = d.datdba
|
338
|
+
WHERE d.datname = $1`, [dbName]);
|
339
|
+
return rows[0]?.owner ?? null;
|
340
|
+
}
|
341
|
+
exports.getPGDatabaseOwner = getPGDatabaseOwner;
|
342
|
+
function quotePGIdentifier(name) {
|
343
|
+
return `"${name.replace(/"/g, '""')}"`;
|
344
|
+
}
|
345
|
+
async function dropWithForce(admin, dbName) {
|
346
|
+
await admin.query(`DROP DATABASE IF EXISTS ${quotePGIdentifier(dbName)} WITH (FORCE)`);
|
347
|
+
}
|
348
|
+
async function createDb(admin, dbName) {
|
349
|
+
await admin.query(`CREATE DATABASE ${quotePGIdentifier(dbName)}`);
|
350
|
+
}
|
351
|
+
function isForceSyntaxError(e) {
|
352
|
+
return e?.code === '42601' /* syntax_error */ || /WITH\s*\(\s*FORCE\s*\)/i.test(e?.message ?? '');
|
353
|
+
}
|
354
|
+
async function terminateAndDrop(admin, dbName, settleMs, log) {
|
355
|
+
// Prevent new connections (best-effort; ignore errors)
|
356
|
+
try {
|
357
|
+
await admin.query(`ALTER DATABASE ${quotePGIdentifier(dbName)} WITH ALLOW_CONNECTIONS = false`);
|
358
|
+
}
|
359
|
+
catch (e) {
|
360
|
+
log(`ALTER DATABASE ... ALLOW_CONNECTIONS=false failed (continuing): ${shortenErr(e)}`);
|
361
|
+
}
|
362
|
+
// Terminate existing sessions
|
363
|
+
await admin.query(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = $1 AND pid <> pg_backend_pid()`, [dbName]);
|
364
|
+
if (settleMs > 0) {
|
365
|
+
log(`Waiting ${settleMs}ms for backends to terminate...`);
|
366
|
+
await new Promise((r) => setTimeout(r, settleMs));
|
367
|
+
}
|
368
|
+
// Try DROP, and if "being accessed" shows up, retry once after an extra wait
|
369
|
+
try {
|
370
|
+
await admin.query(`DROP DATABASE IF EXISTS ${quotePGIdentifier(dbName)}`);
|
371
|
+
}
|
372
|
+
catch (err) {
|
373
|
+
const e = err;
|
374
|
+
if (e?.code === '55006') {
|
375
|
+
log(`DB still "being accessed by other users"; retrying after extra wait...`);
|
376
|
+
await new Promise((r) => setTimeout(r, Math.max(1000, settleMs)));
|
377
|
+
await admin.query(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = $1 AND pid <> pg_backend_pid()`, [dbName]);
|
378
|
+
await admin.query(`DROP DATABASE IF EXISTS ${quotePGIdentifier(dbName)}`);
|
379
|
+
}
|
380
|
+
else {
|
381
|
+
throw e;
|
382
|
+
}
|
383
|
+
}
|
384
|
+
}
|
385
|
+
function networkOrAuthHint(code) {
|
386
|
+
if (!code)
|
387
|
+
return;
|
388
|
+
switch (code) {
|
389
|
+
case 'ECONNREFUSED':
|
390
|
+
return 'Server not reachable. Check host/port or firewall.';
|
391
|
+
case 'ENOTFOUND':
|
392
|
+
return 'Hostname not resolvable. Check DNS/host.';
|
393
|
+
case 'ETIMEDOUT':
|
394
|
+
return 'Connection timed out. Check network/firewall.';
|
395
|
+
case '28P01':
|
396
|
+
return 'Invalid password.';
|
397
|
+
case '28000':
|
398
|
+
return 'Authentication rejected (pg_hba.conf or method).';
|
399
|
+
default: {
|
400
|
+
if (code.substring(0, 2) === '28')
|
401
|
+
return 'Other connection security error';
|
402
|
+
return undefined;
|
403
|
+
}
|
404
|
+
}
|
405
|
+
}
|
406
|
+
function createDropHintFromSqlState(code) {
|
407
|
+
switch (code?.substring(0, 5)) {
|
408
|
+
case '42501':
|
409
|
+
return 'Insufficient privilege. You must be the owner or a superuser.';
|
410
|
+
case '53300':
|
411
|
+
return 'Too many connections to server; free some slots.';
|
412
|
+
default:
|
413
|
+
break;
|
414
|
+
}
|
415
|
+
switch (code?.substring(0, 2)) {
|
416
|
+
case '42':
|
417
|
+
return 'Syntax error or access rule violation.';
|
418
|
+
case '3D':
|
419
|
+
return 'Target database does not exist (already gone).';
|
420
|
+
case '55':
|
421
|
+
return 'Database is in use. Terminate sessions or use PG13+ WITH (FORCE).';
|
422
|
+
case '53':
|
423
|
+
return 'Insufficient resources.';
|
424
|
+
default:
|
425
|
+
return undefined;
|
426
|
+
}
|
427
|
+
}
|
428
|
+
//# sourceMappingURL=database_utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"database_utils.js","sourceRoot":"","sources":["../../src/database_utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/datasource.d.ts
CHANGED
@@ -105,5 +105,5 @@ export declare const createTransactionCompletionTablePG = "\n CREATE TABLE IF N
|
|
105
105
|
export declare function isPGRetriableTransactionError(error: unknown): boolean;
|
106
106
|
export declare function isPGKeyConflictError(error: unknown): boolean;
|
107
107
|
export declare function isPGFailedSqlTransactionError(error: unknown): boolean;
|
108
|
-
export {};
|
108
|
+
export { maskDatabaseUrl, getDatabaseNameFromUrl, deriveDatabaseUrl, getPGClientConfig, connectToPGDatabase, connectToPGAndReportOutcome, DropDatabaseOptions, DropDatabaseResult, dropPGDatabase, EnsureDatabaseOptions, EnsureDatabaseResult, ensurePGDatabase, } from './database_utils';
|
109
109
|
//# sourceMappingURL=datasource.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../src/datasource.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../src/datasource.ts"],"names":[],"mappings":"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"}
|