@take-out/postgres 0.1.9 → 0.1.11
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/cjs/getDBClient.cjs +7 -17
- package/dist/cjs/getDBClient.js +8 -19
- package/dist/cjs/getDBClient.js.map +2 -2
- package/dist/cjs/migrate.cjs +31 -36
- package/dist/cjs/migrate.js +10 -17
- package/dist/cjs/migrate.js.map +1 -1
- package/dist/esm/getDBClient.js +8 -19
- package/dist/esm/getDBClient.js.map +2 -2
- package/dist/esm/getDBClient.mjs +7 -17
- package/dist/esm/getDBClient.mjs.map +1 -1
- package/dist/esm/migrate.js +10 -17
- package/dist/esm/migrate.js.map +1 -1
- package/dist/esm/migrate.mjs +31 -36
- package/dist/esm/migrate.mjs.map +1 -1
- package/package.json +2 -2
- package/src/getDBClient.ts +0 -10
- package/src/migrate.ts +0 -19
- package/types/getDBClient.d.ts.map +1 -1
- package/types/migrate.d.ts.map +1 -1
package/dist/cjs/getDBClient.cjs
CHANGED
|
@@ -68,23 +68,16 @@ async function tryToGetNewClientFromPool(providedPool, connectionString, retries
|
|
|
68
68
|
default: retry
|
|
69
69
|
} = await import("async-retry");
|
|
70
70
|
return await retry(async () => {
|
|
71
|
-
if (providedPool)
|
|
72
|
-
console.info("Connecting to provided pool...");
|
|
73
|
-
const client2 = await providedPool.connect();
|
|
74
|
-
return console.info("Connected to pool"), client2;
|
|
75
|
-
}
|
|
71
|
+
if (providedPool) return await providedPool.connect();
|
|
76
72
|
if (!connectionString) throw new Error("No connection string provided");
|
|
77
|
-
|
|
73
|
+
return await getOrCreatePoolCache(connectionString, {
|
|
78
74
|
connectionString,
|
|
79
75
|
connectionTimeoutMillis: 5e3,
|
|
80
76
|
// idle_session_timeout set to 35s on server, client timeout at 30s
|
|
81
77
|
// fix via https://github.com/brianc/node-postgres/issues/2718#issuecomment-2094885323
|
|
82
78
|
idleTimeoutMillis: 3e4,
|
|
83
79
|
allowExitOnIdle: !0
|
|
84
|
-
});
|
|
85
|
-
console.info(`Connecting to pool ${connectionString}...`);
|
|
86
|
-
const client = await poolCache.pool.connect();
|
|
87
|
-
return console.info("Connected to pool"), client;
|
|
80
|
+
}).pool.connect();
|
|
88
81
|
}, {
|
|
89
82
|
retries,
|
|
90
83
|
minTimeout: 300,
|
|
@@ -118,7 +111,7 @@ async function checkForTooManyConnections(client, connectionString) {
|
|
|
118
111
|
maxConnectionsTolerance = 0.9;
|
|
119
112
|
if (poolCache.maxConnections === null || poolCache.reservedConnections === null) {
|
|
120
113
|
const [maxConnections, reservedConnections] = await getConnectionLimits(client);
|
|
121
|
-
|
|
114
|
+
poolCache.maxConnections = maxConnections, poolCache.reservedConnections = reservedConnections;
|
|
122
115
|
}
|
|
123
116
|
if (poolCache.openedConnections === null || poolCache.openedConnectionsLastUpdate === null || currentTime - poolCache.openedConnectionsLastUpdate > openedConnectionsMaxAge) {
|
|
124
117
|
const openedConnections = await getOpenedConnections(client, connectionString);
|
|
@@ -127,17 +120,14 @@ async function checkForTooManyConnections(client, connectionString) {
|
|
|
127
120
|
return poolCache.openedConnections > (poolCache.maxConnections - poolCache.reservedConnections) * maxConnectionsTolerance ? (console.warn(`Too many connections detected: ${poolCache.openedConnections}/${poolCache.maxConnections - poolCache.reservedConnections}`), !0) : !1;
|
|
128
121
|
}
|
|
129
122
|
async function getConnectionLimits(client) {
|
|
130
|
-
console.info("Getting connection limits...");
|
|
131
123
|
const maxConnectionsResult = await client.query("SHOW max_connections"),
|
|
132
124
|
reservedConnectionResult = await client.query("SHOW superuser_reserved_connections");
|
|
133
125
|
return [Number.parseInt(maxConnectionsResult.rows[0].max_connections, 10), Number.parseInt(reservedConnectionResult.rows[0].superuser_reserved_connections, 10)];
|
|
134
126
|
}
|
|
135
127
|
async function getOpenedConnections(client, connectionString) {
|
|
136
|
-
const dbName = new URL(connectionString).pathname.slice(1)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
result = Number.parseInt(openConnectionsResult.rows[0]?.opened_connections || 0, 10);
|
|
140
|
-
return console.info(`Opened connections: ${result}`), result;
|
|
128
|
+
const dbName = new URL(connectionString).pathname.slice(1),
|
|
129
|
+
openConnectionsResult = await client.query("SELECT numbackends as opened_connections FROM pg_stat_database WHERE datname = $1", [dbName]);
|
|
130
|
+
return Number.parseInt(openConnectionsResult.rows[0]?.opened_connections || 0, 10);
|
|
141
131
|
}
|
|
142
132
|
async function getNewClient(options = {}) {
|
|
143
133
|
const {
|
package/dist/cjs/getDBClient.js
CHANGED
|
@@ -53,24 +53,18 @@ async function tryToGetNewClientFromPool(providedPool, connectionString, retries
|
|
|
53
53
|
const { default: retry } = await import("async-retry");
|
|
54
54
|
return await retry(
|
|
55
55
|
async () => {
|
|
56
|
-
if (providedPool)
|
|
57
|
-
|
|
58
|
-
const client2 = await providedPool.connect();
|
|
59
|
-
return console.info("Connected to pool"), client2;
|
|
60
|
-
}
|
|
56
|
+
if (providedPool)
|
|
57
|
+
return await providedPool.connect();
|
|
61
58
|
if (!connectionString)
|
|
62
59
|
throw new Error("No connection string provided");
|
|
63
|
-
|
|
60
|
+
return await getOrCreatePoolCache(connectionString, {
|
|
64
61
|
connectionString,
|
|
65
62
|
connectionTimeoutMillis: 5e3,
|
|
66
63
|
// idle_session_timeout set to 35s on server, client timeout at 30s
|
|
67
64
|
// fix via https://github.com/brianc/node-postgres/issues/2718#issuecomment-2094885323
|
|
68
65
|
idleTimeoutMillis: 3e4,
|
|
69
66
|
allowExitOnIdle: !0
|
|
70
|
-
});
|
|
71
|
-
console.info(`Connecting to pool ${connectionString}...`);
|
|
72
|
-
const client = await poolCache.pool.connect();
|
|
73
|
-
return console.info("Connected to pool"), client;
|
|
67
|
+
}).pool.connect();
|
|
74
68
|
},
|
|
75
69
|
{
|
|
76
70
|
retries,
|
|
@@ -112,9 +106,7 @@ async function checkForTooManyConnections(client, connectionString) {
|
|
|
112
106
|
const currentTime = Date.now(), openedConnectionsMaxAge = 1e4, maxConnectionsTolerance = 0.9;
|
|
113
107
|
if (poolCache.maxConnections === null || poolCache.reservedConnections === null) {
|
|
114
108
|
const [maxConnections, reservedConnections] = await getConnectionLimits(client);
|
|
115
|
-
|
|
116
|
-
`Max connections: ${maxConnections}, Reserved connections: ${reservedConnections}`
|
|
117
|
-
), poolCache.maxConnections = maxConnections, poolCache.reservedConnections = reservedConnections;
|
|
109
|
+
poolCache.maxConnections = maxConnections, poolCache.reservedConnections = reservedConnections;
|
|
118
110
|
}
|
|
119
111
|
if (poolCache.openedConnections === null || poolCache.openedConnectionsLastUpdate === null || currentTime - poolCache.openedConnectionsLastUpdate > openedConnectionsMaxAge) {
|
|
120
112
|
const openedConnections = await getOpenedConnections(client, connectionString);
|
|
@@ -125,7 +117,6 @@ async function checkForTooManyConnections(client, connectionString) {
|
|
|
125
117
|
), !0) : !1;
|
|
126
118
|
}
|
|
127
119
|
async function getConnectionLimits(client) {
|
|
128
|
-
console.info("Getting connection limits...");
|
|
129
120
|
const maxConnectionsResult = await client.query("SHOW max_connections"), reservedConnectionResult = await client.query(
|
|
130
121
|
"SHOW superuser_reserved_connections"
|
|
131
122
|
);
|
|
@@ -135,16 +126,14 @@ async function getConnectionLimits(client) {
|
|
|
135
126
|
];
|
|
136
127
|
}
|
|
137
128
|
async function getOpenedConnections(client, connectionString) {
|
|
138
|
-
const dbName = new URL(connectionString).pathname.slice(1)
|
|
139
|
-
console.info("Getting opened connections...");
|
|
140
|
-
const openConnectionsResult = await client.query(
|
|
129
|
+
const dbName = new URL(connectionString).pathname.slice(1), openConnectionsResult = await client.query(
|
|
141
130
|
"SELECT numbackends as opened_connections FROM pg_stat_database WHERE datname = $1",
|
|
142
131
|
[dbName]
|
|
143
|
-
)
|
|
132
|
+
);
|
|
133
|
+
return Number.parseInt(
|
|
144
134
|
openConnectionsResult.rows[0]?.opened_connections || 0,
|
|
145
135
|
10
|
|
146
136
|
);
|
|
147
|
-
return console.info(`Opened connections: ${result}`), result;
|
|
148
137
|
}
|
|
149
138
|
async function getNewClient(options = {}) {
|
|
150
139
|
const { connectionString } = options;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/getDBClient.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA+C;AAY/C,MAAM,QAAQ,oBAAI,IAShB,GAEI,gBAAgB,CAAC,qBAA6B,kBAE9C,uBAAuB,CAAC,kBAA0B,WAA0B;AAChF,QAAM,MAAM,cAAc,gBAAgB;AAE1C,SAAK,MAAM,IAAI,GAAG,KAChB,MAAM,IAAI,KAAK;AAAA,IACb,MAAM,IAAI,UAAAA,QAAG,KAAK,MAAM;AAAA,IACxB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,6BAA6B;AAAA,EAC/B,CAAC,GAGI,MAAM,IAAI,GAAG;AACtB;AAEA,eAAsB,YAAY,UAA8B,CAAC,GAAwB;AACvF,QAAM,EAAE,MAAM,kBAAkB,UAAU,EAAE,IAAI;AAEhD,MAAI,CAAC,QAAQ,CAAC;AACZ,UAAM,IAAI,MAAM,kDAAkD;AAGpE,MAAI,SAA4B;AAEhC,MAAI;AACF,oBAAS,MAAM,0BAA0B,MAAM,kBAAkB,OAAO,GACjE;AAAA,EACT,SAAS,OAAO;AACd,kBAAQ,MAAM,4BAA4B,KAAK,GACzC;AAAA,EACR;AACF;AAEA,eAAe,0BACb,cACA,kBACA,SACqB;AACrB,QAAM,EAAE,SAAS,MAAM,IAAI,MAAM,OAAO,aAAa;
|
|
5
|
-
"names": ["pg"
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA+C;AAY/C,MAAM,QAAQ,oBAAI,IAShB,GAEI,gBAAgB,CAAC,qBAA6B,kBAE9C,uBAAuB,CAAC,kBAA0B,WAA0B;AAChF,QAAM,MAAM,cAAc,gBAAgB;AAE1C,SAAK,MAAM,IAAI,GAAG,KAChB,MAAM,IAAI,KAAK;AAAA,IACb,MAAM,IAAI,UAAAA,QAAG,KAAK,MAAM;AAAA,IACxB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,6BAA6B;AAAA,EAC/B,CAAC,GAGI,MAAM,IAAI,GAAG;AACtB;AAEA,eAAsB,YAAY,UAA8B,CAAC,GAAwB;AACvF,QAAM,EAAE,MAAM,kBAAkB,UAAU,EAAE,IAAI;AAEhD,MAAI,CAAC,QAAQ,CAAC;AACZ,UAAM,IAAI,MAAM,kDAAkD;AAGpE,MAAI,SAA4B;AAEhC,MAAI;AACF,oBAAS,MAAM,0BAA0B,MAAM,kBAAkB,OAAO,GACjE;AAAA,EACT,SAAS,OAAO;AACd,kBAAQ,MAAM,4BAA4B,KAAK,GACzC;AAAA,EACR;AACF;AAEA,eAAe,0BACb,cACA,kBACA,SACqB;AACrB,QAAM,EAAE,SAAS,MAAM,IAAI,MAAM,OAAO,aAAa;AAkCrD,SAjCuB,MAAM;AAAA,IAC3B,YAAY;AACV,UAAI;AAEF,eADe,MAAM,aAAa,QAAQ;AAI5C,UAAI,CAAC;AACH,cAAM,IAAI,MAAM,+BAA+B;AAejD,aADe,MAFG,qBAAqB,kBATD;AAAA,QACpC;AAAA,QACA,yBAAyB;AAAA;AAAA;AAAA,QAGzB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,MACnB,CAEuE,EAExC,KAAK,QAAQ;AAAA,IAE9C;AAAA,IACA;AAAA,MACE;AAAA,MACA,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,YAAY;AAAA,IACd;AAAA,EACF;AAGF;AAEA,eAAsB,QACpB,WACA,QACA,UAA8B,CAAC,GACD;AAC9B,MAAI,SAA4B;AAEhC,MAAI;AACF,oBAAS,MAAM;AAAA,MACb,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ,WAAW;AAAA,IACrB,GACO,MAAM,OAAO,MAAM,WAAW,MAAM;AAAA,EAC7C,SAAS,OAAO;AACd,kBAAQ,MAAM,0BAA0B;AAAA,MACtC,OAAO;AAAA,MACP,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC9D,CAAC,GACK;AAAA,EACR,UAAE;AACA,QAAI,UAAU,QAAQ;AAMpB,UAL2B,MAAM;AAAA,QAC/B;AAAA,QACA,QAAQ;AAAA,MACV,GAEwB;AACtB,cAAM,YAAY,MAAM,IAAI,cAAc,QAAQ,gBAAgB,CAAC;AACnE,eAAO,QAAQ,GACf,MAAM,WAAW,KAAK,IAAI,GACtB,aACF,MAAM,OAAO,cAAc,QAAQ,gBAAgB,CAAC;AAAA,MAExD;AACE,eAAO,QAAQ;AAAA,QAEZ,CAAI,UACT,OAAO,QAAQ;AAAA,EAEnB;AACF;AAEA,eAAe,2BACb,QACA,kBACkB;AAClB,QAAM,YAAY,MAAM,IAAI,cAAc,gBAAgB,CAAC;AAC3D,MAAI,CAAC,UAAW,QAAO;AAEvB,QAAM,cAAc,KAAK,IAAI,GACvB,0BAA0B,KAC1B,0BAA0B;AAEhC,MAAI,UAAU,mBAAmB,QAAQ,UAAU,wBAAwB,MAAM;AAC/E,UAAM,CAAC,gBAAgB,mBAAmB,IAAI,MAAM,oBAAoB,MAAM;AAC9E,cAAU,iBAAiB,gBAC3B,UAAU,sBAAsB;AAAA,EAClC;AAEA,MACE,UAAU,sBAAsB,QAChC,UAAU,gCAAgC,QAC1C,cAAc,UAAU,8BAA8B,yBACtD;AACA,UAAM,oBAAoB,MAAM,qBAAqB,QAAQ,gBAAgB;AAC7E,cAAU,oBAAoB,mBAC9B,UAAU,8BAA8B;AAAA,EAC1C;AAEA,SACE,UAAU,qBACT,UAAU,iBAAiB,UAAU,uBAAuB,2BAE7D,QAAQ;AAAA,IACN,kCAAkC,UAAU,iBAAiB,IAAI,UAAU,iBAAiB,UAAU,mBAAmB;AAAA,EAC3H,GACO,MAGF;AACT;AAEA,eAAe,oBAAoB,QAA+C;AAChF,QAAM,uBAAuB,MAAM,OAAO,MAAM,sBAAsB,GAChE,2BAA2B,MAAM,OAAO;AAAA,IAC5C;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,SAAS,qBAAqB,KAAK,CAAC,EAAE,iBAAiB,EAAE;AAAA,IAChE,OAAO,SAAS,yBAAyB,KAAK,CAAC,EAAE,gCAAgC,EAAE;AAAA,EACrF;AACF;AAEA,eAAe,qBACb,QACA,kBACiB;AAEjB,QAAM,SAAS,IAAI,IAAI,gBAAgB,EAAE,SAAS,MAAM,CAAC,GACnD,wBAAwB,MAAM,OAAO;AAAA,IACzC;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AAKA,SAJe,OAAO;AAAA,IACpB,sBAAsB,KAAK,CAAC,GAAG,sBAAsB;AAAA,IACrD;AAAA,EACF;AAEF;AAEA,eAAsB,aAAa,UAA8B,CAAC,GAAuB;AACvF,QAAM,EAAE,iBAAiB,IAAI;AAE7B,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,+CAA+C;AAGjE,MAAI;AAEF,WADe,MAAM,kBAAkB,gBAAgB;AAAA,EAEzD,SAAS,OAAO;AACd,kBAAQ,MAAM,6BAA6B,KAAK,GAC1C;AAAA,EACR;AACF;AAEA,eAAe,kBAAkB,kBAA8C;AAC7E,QAAM,iBAAgC;AAAA,IACpC;AAAA,IACA,yBAAyB;AAAA,IACzB,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,EACnB,GAEM,EAAE,SAAS,MAAM,IAAI,MAAM,OAAO,aAAa;AAerD,SAde,MAAM;AAAA,IACnB,YAAY;AACV,YAAM,YAAY,IAAI,UAAAA,QAAG,OAAO,cAAc;AAC9C,mBAAM,UAAU,QAAQ,GACjB;AAAA,IACT;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,YAAY;AAAA,IACd;AAAA,EACF;AAGF;",
|
|
5
|
+
"names": ["pg"]
|
|
6
6
|
}
|
package/dist/cjs/migrate.cjs
CHANGED
|
@@ -28,24 +28,20 @@ var import_node_path = require("node:path"),
|
|
|
28
28
|
const isServerless = !!(process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.AWS_LAMBDA_RUNTIME_API || process.env.LAMBDA_RUNTIME_DIR || process.env.IS_SERVERLESS);
|
|
29
29
|
async function migrate(options) {
|
|
30
30
|
const {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const client = await (0, import_getDBClient.getDBClient)({
|
|
31
|
+
connectionString,
|
|
32
|
+
migrationsGlob,
|
|
33
|
+
createDatabases = [],
|
|
34
|
+
onMigrationComplete,
|
|
35
|
+
gitSha,
|
|
36
|
+
cvrDb,
|
|
37
|
+
changeDb
|
|
38
|
+
} = options,
|
|
39
|
+
client = await (0, import_getDBClient.getDBClient)({
|
|
41
40
|
connectionString
|
|
42
41
|
}),
|
|
43
|
-
hasDB = async name =>
|
|
44
|
-
const result = !!(await client.query(`
|
|
42
|
+
hasDB = async name => !!(await client.query(`
|
|
45
43
|
SELECT 1 FROM pg_database WHERE datname = '${name}'
|
|
46
44
|
`)).rows.length;
|
|
47
|
-
return console.info(result ? `${name} db exists` : `creating ${name} db`), result;
|
|
48
|
-
};
|
|
49
45
|
if (cvrDb || changeDb) {
|
|
50
46
|
if (!cvrDb) throw new Error("Missing cvrDb");
|
|
51
47
|
const zeroDBNames = [(0, import_node_path.basename)(cvrDb || ""), (0, import_node_path.basename)(changeDb || "")].filter(Boolean);
|
|
@@ -70,28 +66,27 @@ async function migrate(options) {
|
|
|
70
66
|
run
|
|
71
67
|
})).filter(({
|
|
72
68
|
name
|
|
73
|
-
}) => /^[\d]+/.test(name))
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
await client.query("COMMIT"), console.info("Successfully committed all migrations");
|
|
69
|
+
}) => /^[\d]+/.test(name)),
|
|
70
|
+
migrations = [...(await Promise.all(tsMigrationsSorted.map(async ({
|
|
71
|
+
name,
|
|
72
|
+
run
|
|
73
|
+
}) => {
|
|
74
|
+
if (appliedMigrationNames.has(name)) return null;
|
|
75
|
+
try {
|
|
76
|
+
return {
|
|
77
|
+
...(await run()),
|
|
78
|
+
name
|
|
79
|
+
};
|
|
80
|
+
} catch (error) {
|
|
81
|
+
throw console.error(`Failed to load TypeScript migration ${name}:`, error), error;
|
|
82
|
+
}
|
|
83
|
+
})).then(migrations2 => migrations2.filter(Boolean)))].sort((a, b) => a.name.localeCompare(b.name));
|
|
84
|
+
if (!migrations.length) await client.query("COMMIT");else {
|
|
85
|
+
for (const migration of migrations) migration.up && (await migration.up(client)), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [migration.name]);
|
|
86
|
+
await client.query("COMMIT");
|
|
92
87
|
}
|
|
93
88
|
} catch (e) {
|
|
94
|
-
console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK")
|
|
89
|
+
console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK");
|
|
95
90
|
try {
|
|
96
91
|
client.release(!1);
|
|
97
92
|
} catch (releaseErr) {
|
|
@@ -99,7 +94,7 @@ async function migrate(options) {
|
|
|
99
94
|
}
|
|
100
95
|
throw e;
|
|
101
96
|
}
|
|
102
|
-
onMigrationComplete && (await onMigrationComplete())
|
|
97
|
+
onMigrationComplete && (await onMigrationComplete());
|
|
103
98
|
try {
|
|
104
99
|
client.release(!1);
|
|
105
100
|
} catch (err) {
|
|
@@ -110,7 +105,7 @@ async function migrate(options) {
|
|
|
110
105
|
console.error("Error destroying connection:", destroyErr);
|
|
111
106
|
}
|
|
112
107
|
}
|
|
113
|
-
|
|
108
|
+
exitProcess();
|
|
114
109
|
}
|
|
115
110
|
function exitProcess() {
|
|
116
111
|
typeof process > "u" || isServerless || process.exit(0);
|
package/dist/cjs/migrate.js
CHANGED
|
@@ -28,14 +28,9 @@ async function migrate(options) {
|
|
|
28
28
|
gitSha,
|
|
29
29
|
cvrDb,
|
|
30
30
|
changeDb
|
|
31
|
-
} = options
|
|
32
|
-
console.info(`Running migrations${gitSha ? ` for git version: ${gitSha}` : ""}`);
|
|
33
|
-
const client = await (0, import_getDBClient.getDBClient)({ connectionString }), hasDB = async (name) => {
|
|
34
|
-
const result = !!(await client.query(`
|
|
31
|
+
} = options, client = await (0, import_getDBClient.getDBClient)({ connectionString }), hasDB = async (name) => !!(await client.query(`
|
|
35
32
|
SELECT 1 FROM pg_database WHERE datname = '${name}'
|
|
36
33
|
`)).rows.length;
|
|
37
|
-
return console.info(result ? `${name} db exists` : `creating ${name} db`), result;
|
|
38
|
-
};
|
|
39
34
|
if (cvrDb || changeDb) {
|
|
40
35
|
if (!cvrDb)
|
|
41
36
|
throw new Error("Missing cvrDb");
|
|
@@ -58,12 +53,10 @@ async function migrate(options) {
|
|
|
58
53
|
const appliedMigrations = await client.query("SELECT name FROM public.migrations"), appliedMigrationNames = new Set(appliedMigrations.rows.map((row) => row.name)), tsMigrationsSorted = Object.entries(migrationsGlob).sort(([a], [b]) => a.localeCompare(b)).map(([file, run]) => ({
|
|
59
54
|
name: (0, import_node_path.basename)(file).replace(".ts", ""),
|
|
60
55
|
run
|
|
61
|
-
})).filter(({ name }) => /^[\d]+/.test(name))
|
|
62
|
-
console.info(`Found ${tsMigrationsSorted.length} TypeScript migrations`);
|
|
63
|
-
const migrations = [...await Promise.all(
|
|
56
|
+
})).filter(({ name }) => /^[\d]+/.test(name)), migrations = [...await Promise.all(
|
|
64
57
|
tsMigrationsSorted.map(async ({ name, run }) => {
|
|
65
58
|
if (appliedMigrationNames.has(name))
|
|
66
|
-
return
|
|
59
|
+
return null;
|
|
67
60
|
try {
|
|
68
61
|
return { ...await run(), name };
|
|
69
62
|
} catch (error) {
|
|
@@ -72,16 +65,16 @@ async function migrate(options) {
|
|
|
72
65
|
})
|
|
73
66
|
).then((migrations2) => migrations2.filter(Boolean))].sort((a, b) => a.name.localeCompare(b.name));
|
|
74
67
|
if (!migrations.length)
|
|
75
|
-
|
|
68
|
+
await client.query("COMMIT");
|
|
76
69
|
else {
|
|
77
70
|
for (const migration of migrations)
|
|
78
|
-
|
|
71
|
+
migration.up && await migration.up(client), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [
|
|
79
72
|
migration.name
|
|
80
|
-
])
|
|
81
|
-
await client.query("COMMIT")
|
|
73
|
+
]);
|
|
74
|
+
await client.query("COMMIT");
|
|
82
75
|
}
|
|
83
76
|
} catch (e) {
|
|
84
|
-
console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK")
|
|
77
|
+
console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK");
|
|
85
78
|
try {
|
|
86
79
|
client.release(!1);
|
|
87
80
|
} catch (releaseErr) {
|
|
@@ -89,7 +82,7 @@ async function migrate(options) {
|
|
|
89
82
|
}
|
|
90
83
|
throw e;
|
|
91
84
|
}
|
|
92
|
-
onMigrationComplete && await onMigrationComplete()
|
|
85
|
+
onMigrationComplete && await onMigrationComplete();
|
|
93
86
|
try {
|
|
94
87
|
client.release(!1);
|
|
95
88
|
} catch (err) {
|
|
@@ -100,7 +93,7 @@ async function migrate(options) {
|
|
|
100
93
|
console.error("Error destroying connection:", destroyErr);
|
|
101
94
|
}
|
|
102
95
|
}
|
|
103
|
-
|
|
96
|
+
exitProcess();
|
|
104
97
|
}
|
|
105
98
|
function exitProcess() {
|
|
106
99
|
typeof process > "u" || isServerless || process.exit(0);
|
package/dist/cjs/migrate.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/migrate.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,uBAAyB,sBAEzB,qBAA4B;AAoB5B,MAAM,eAAe,CAAC,EACpB,QAAQ,IAAI,4BACZ,QAAQ,IAAI,0BACZ,QAAQ,IAAI,sBACZ,QAAQ,IAAI;AAGd,eAAsB,QAAQ,SAAyB;AACrD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,kBAAkB,CAAC;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["migrations"]
|
|
6
6
|
}
|
package/dist/esm/getDBClient.js
CHANGED
|
@@ -24,24 +24,18 @@ async function tryToGetNewClientFromPool(providedPool, connectionString, retries
|
|
|
24
24
|
const { default: retry } = await import("async-retry");
|
|
25
25
|
return await retry(
|
|
26
26
|
async () => {
|
|
27
|
-
if (providedPool)
|
|
28
|
-
|
|
29
|
-
const client2 = await providedPool.connect();
|
|
30
|
-
return console.info("Connected to pool"), client2;
|
|
31
|
-
}
|
|
27
|
+
if (providedPool)
|
|
28
|
+
return await providedPool.connect();
|
|
32
29
|
if (!connectionString)
|
|
33
30
|
throw new Error("No connection string provided");
|
|
34
|
-
|
|
31
|
+
return await getOrCreatePoolCache(connectionString, {
|
|
35
32
|
connectionString,
|
|
36
33
|
connectionTimeoutMillis: 5e3,
|
|
37
34
|
// idle_session_timeout set to 35s on server, client timeout at 30s
|
|
38
35
|
// fix via https://github.com/brianc/node-postgres/issues/2718#issuecomment-2094885323
|
|
39
36
|
idleTimeoutMillis: 3e4,
|
|
40
37
|
allowExitOnIdle: !0
|
|
41
|
-
});
|
|
42
|
-
console.info(`Connecting to pool ${connectionString}...`);
|
|
43
|
-
const client = await poolCache.pool.connect();
|
|
44
|
-
return console.info("Connected to pool"), client;
|
|
38
|
+
}).pool.connect();
|
|
45
39
|
},
|
|
46
40
|
{
|
|
47
41
|
retries,
|
|
@@ -83,9 +77,7 @@ async function checkForTooManyConnections(client, connectionString) {
|
|
|
83
77
|
const currentTime = Date.now(), openedConnectionsMaxAge = 1e4, maxConnectionsTolerance = 0.9;
|
|
84
78
|
if (poolCache.maxConnections === null || poolCache.reservedConnections === null) {
|
|
85
79
|
const [maxConnections, reservedConnections] = await getConnectionLimits(client);
|
|
86
|
-
|
|
87
|
-
`Max connections: ${maxConnections}, Reserved connections: ${reservedConnections}`
|
|
88
|
-
), poolCache.maxConnections = maxConnections, poolCache.reservedConnections = reservedConnections;
|
|
80
|
+
poolCache.maxConnections = maxConnections, poolCache.reservedConnections = reservedConnections;
|
|
89
81
|
}
|
|
90
82
|
if (poolCache.openedConnections === null || poolCache.openedConnectionsLastUpdate === null || currentTime - poolCache.openedConnectionsLastUpdate > openedConnectionsMaxAge) {
|
|
91
83
|
const openedConnections = await getOpenedConnections(client, connectionString);
|
|
@@ -96,7 +88,6 @@ async function checkForTooManyConnections(client, connectionString) {
|
|
|
96
88
|
), !0) : !1;
|
|
97
89
|
}
|
|
98
90
|
async function getConnectionLimits(client) {
|
|
99
|
-
console.info("Getting connection limits...");
|
|
100
91
|
const maxConnectionsResult = await client.query("SHOW max_connections"), reservedConnectionResult = await client.query(
|
|
101
92
|
"SHOW superuser_reserved_connections"
|
|
102
93
|
);
|
|
@@ -106,16 +97,14 @@ async function getConnectionLimits(client) {
|
|
|
106
97
|
];
|
|
107
98
|
}
|
|
108
99
|
async function getOpenedConnections(client, connectionString) {
|
|
109
|
-
const dbName = new URL(connectionString).pathname.slice(1)
|
|
110
|
-
console.info("Getting opened connections...");
|
|
111
|
-
const openConnectionsResult = await client.query(
|
|
100
|
+
const dbName = new URL(connectionString).pathname.slice(1), openConnectionsResult = await client.query(
|
|
112
101
|
"SELECT numbackends as opened_connections FROM pg_stat_database WHERE datname = $1",
|
|
113
102
|
[dbName]
|
|
114
|
-
)
|
|
103
|
+
);
|
|
104
|
+
return Number.parseInt(
|
|
115
105
|
openConnectionsResult.rows[0]?.opened_connections || 0,
|
|
116
106
|
10
|
|
117
107
|
);
|
|
118
|
-
return console.info(`Opened connections: ${result}`), result;
|
|
119
108
|
}
|
|
120
109
|
async function getNewClient(options = {}) {
|
|
121
110
|
const { connectionString } = options;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/getDBClient.ts"],
|
|
4
|
-
"mappings": "AAAA,OAAO,QAAwC;AAY/C,MAAM,QAAQ,oBAAI,IAShB,GAEI,gBAAgB,CAAC,qBAA6B,kBAE9C,uBAAuB,CAAC,kBAA0B,WAA0B;AAChF,QAAM,MAAM,cAAc,gBAAgB;AAE1C,SAAK,MAAM,IAAI,GAAG,KAChB,MAAM,IAAI,KAAK;AAAA,IACb,MAAM,IAAI,GAAG,KAAK,MAAM;AAAA,IACxB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,6BAA6B;AAAA,EAC/B,CAAC,GAGI,MAAM,IAAI,GAAG;AACtB;AAEA,eAAsB,YAAY,UAA8B,CAAC,GAAwB;AACvF,QAAM,EAAE,MAAM,kBAAkB,UAAU,EAAE,IAAI;AAEhD,MAAI,CAAC,QAAQ,CAAC;AACZ,UAAM,IAAI,MAAM,kDAAkD;AAGpE,MAAI,SAA4B;AAEhC,MAAI;AACF,oBAAS,MAAM,0BAA0B,MAAM,kBAAkB,OAAO,GACjE;AAAA,EACT,SAAS,OAAO;AACd,kBAAQ,MAAM,4BAA4B,KAAK,GACzC;AAAA,EACR;AACF;AAEA,eAAe,0BACb,cACA,kBACA,SACqB;AACrB,QAAM,EAAE,SAAS,MAAM,IAAI,MAAM,OAAO,aAAa;
|
|
5
|
-
"names": [
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
6
|
}
|
package/dist/esm/getDBClient.mjs
CHANGED
|
@@ -30,23 +30,16 @@ async function tryToGetNewClientFromPool(providedPool, connectionString, retries
|
|
|
30
30
|
default: retry
|
|
31
31
|
} = await import("async-retry");
|
|
32
32
|
return await retry(async () => {
|
|
33
|
-
if (providedPool)
|
|
34
|
-
console.info("Connecting to provided pool...");
|
|
35
|
-
const client2 = await providedPool.connect();
|
|
36
|
-
return console.info("Connected to pool"), client2;
|
|
37
|
-
}
|
|
33
|
+
if (providedPool) return await providedPool.connect();
|
|
38
34
|
if (!connectionString) throw new Error("No connection string provided");
|
|
39
|
-
|
|
35
|
+
return await getOrCreatePoolCache(connectionString, {
|
|
40
36
|
connectionString,
|
|
41
37
|
connectionTimeoutMillis: 5e3,
|
|
42
38
|
// idle_session_timeout set to 35s on server, client timeout at 30s
|
|
43
39
|
// fix via https://github.com/brianc/node-postgres/issues/2718#issuecomment-2094885323
|
|
44
40
|
idleTimeoutMillis: 3e4,
|
|
45
41
|
allowExitOnIdle: !0
|
|
46
|
-
});
|
|
47
|
-
console.info(`Connecting to pool ${connectionString}...`);
|
|
48
|
-
const client = await poolCache.pool.connect();
|
|
49
|
-
return console.info("Connected to pool"), client;
|
|
42
|
+
}).pool.connect();
|
|
50
43
|
}, {
|
|
51
44
|
retries,
|
|
52
45
|
minTimeout: 300,
|
|
@@ -80,7 +73,7 @@ async function checkForTooManyConnections(client, connectionString) {
|
|
|
80
73
|
maxConnectionsTolerance = 0.9;
|
|
81
74
|
if (poolCache.maxConnections === null || poolCache.reservedConnections === null) {
|
|
82
75
|
const [maxConnections, reservedConnections] = await getConnectionLimits(client);
|
|
83
|
-
|
|
76
|
+
poolCache.maxConnections = maxConnections, poolCache.reservedConnections = reservedConnections;
|
|
84
77
|
}
|
|
85
78
|
if (poolCache.openedConnections === null || poolCache.openedConnectionsLastUpdate === null || currentTime - poolCache.openedConnectionsLastUpdate > openedConnectionsMaxAge) {
|
|
86
79
|
const openedConnections = await getOpenedConnections(client, connectionString);
|
|
@@ -89,17 +82,14 @@ async function checkForTooManyConnections(client, connectionString) {
|
|
|
89
82
|
return poolCache.openedConnections > (poolCache.maxConnections - poolCache.reservedConnections) * maxConnectionsTolerance ? (console.warn(`Too many connections detected: ${poolCache.openedConnections}/${poolCache.maxConnections - poolCache.reservedConnections}`), !0) : !1;
|
|
90
83
|
}
|
|
91
84
|
async function getConnectionLimits(client) {
|
|
92
|
-
console.info("Getting connection limits...");
|
|
93
85
|
const maxConnectionsResult = await client.query("SHOW max_connections"),
|
|
94
86
|
reservedConnectionResult = await client.query("SHOW superuser_reserved_connections");
|
|
95
87
|
return [Number.parseInt(maxConnectionsResult.rows[0].max_connections, 10), Number.parseInt(reservedConnectionResult.rows[0].superuser_reserved_connections, 10)];
|
|
96
88
|
}
|
|
97
89
|
async function getOpenedConnections(client, connectionString) {
|
|
98
|
-
const dbName = new URL(connectionString).pathname.slice(1)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
result = Number.parseInt(openConnectionsResult.rows[0]?.opened_connections || 0, 10);
|
|
102
|
-
return console.info(`Opened connections: ${result}`), result;
|
|
90
|
+
const dbName = new URL(connectionString).pathname.slice(1),
|
|
91
|
+
openConnectionsResult = await client.query("SELECT numbackends as opened_connections FROM pg_stat_database WHERE datname = $1", [dbName]);
|
|
92
|
+
return Number.parseInt(openConnectionsResult.rows[0]?.opened_connections || 0, 10);
|
|
103
93
|
}
|
|
104
94
|
async function getNewClient(options = {}) {
|
|
105
95
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pg","cache","Map","createPoolKey","connectionString","getOrCreatePoolCache","config","key","has","set","pool","Pool","maxConnections","reservedConnections","openedConnections","openedConnectionsLastUpdate","get","getDBClient","options","retries","Error","client","tryToGetNewClientFromPool","error","console","providedPool","default","retry","
|
|
1
|
+
{"version":3,"names":["pg","cache","Map","createPoolKey","connectionString","getOrCreatePoolCache","config","key","has","set","pool","Pool","maxConnections","reservedConnections","openedConnections","openedConnectionsLastUpdate","get","getDBClient","options","retries","Error","client","tryToGetNewClientFromPool","error","console","providedPool","default","retry","connect","connectionTimeoutMillis","idleTimeoutMillis","allowExitOnIdle","minTimeout","factor","maxTimeout","queryDb","queryText","params","query","message","String","checkForTooManyConnections","poolCache","release","end","delete","currentTime","Date","now","openedConnectionsMaxAge","maxConnectionsTolerance","getConnectionLimits","getOpenedConnections","warn","maxConnectionsResult","reservedConnectionResult","Number","parseInt","rows","max_connections","superuser_reserved_connections","dbName","URL","pathname","slice","openConnectionsResult","opened_connections","getNewClient","tryToGetNewClient","configurations","newClient","Client"],"sources":["../../src/getDBClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/migrate.js
CHANGED
|
@@ -10,14 +10,9 @@ async function migrate(options) {
|
|
|
10
10
|
gitSha,
|
|
11
11
|
cvrDb,
|
|
12
12
|
changeDb
|
|
13
|
-
} = options
|
|
14
|
-
console.info(`Running migrations${gitSha ? ` for git version: ${gitSha}` : ""}`);
|
|
15
|
-
const client = await getDBClient({ connectionString }), hasDB = async (name) => {
|
|
16
|
-
const result = !!(await client.query(`
|
|
13
|
+
} = options, client = await getDBClient({ connectionString }), hasDB = async (name) => !!(await client.query(`
|
|
17
14
|
SELECT 1 FROM pg_database WHERE datname = '${name}'
|
|
18
15
|
`)).rows.length;
|
|
19
|
-
return console.info(result ? `${name} db exists` : `creating ${name} db`), result;
|
|
20
|
-
};
|
|
21
16
|
if (cvrDb || changeDb) {
|
|
22
17
|
if (!cvrDb)
|
|
23
18
|
throw new Error("Missing cvrDb");
|
|
@@ -40,12 +35,10 @@ async function migrate(options) {
|
|
|
40
35
|
const appliedMigrations = await client.query("SELECT name FROM public.migrations"), appliedMigrationNames = new Set(appliedMigrations.rows.map((row) => row.name)), tsMigrationsSorted = Object.entries(migrationsGlob).sort(([a], [b]) => a.localeCompare(b)).map(([file, run]) => ({
|
|
41
36
|
name: basename(file).replace(".ts", ""),
|
|
42
37
|
run
|
|
43
|
-
})).filter(({ name }) => /^[\d]+/.test(name))
|
|
44
|
-
console.info(`Found ${tsMigrationsSorted.length} TypeScript migrations`);
|
|
45
|
-
const migrations = [...await Promise.all(
|
|
38
|
+
})).filter(({ name }) => /^[\d]+/.test(name)), migrations = [...await Promise.all(
|
|
46
39
|
tsMigrationsSorted.map(async ({ name, run }) => {
|
|
47
40
|
if (appliedMigrationNames.has(name))
|
|
48
|
-
return
|
|
41
|
+
return null;
|
|
49
42
|
try {
|
|
50
43
|
return { ...await run(), name };
|
|
51
44
|
} catch (error) {
|
|
@@ -54,16 +47,16 @@ async function migrate(options) {
|
|
|
54
47
|
})
|
|
55
48
|
).then((migrations2) => migrations2.filter(Boolean))].sort((a, b) => a.name.localeCompare(b.name));
|
|
56
49
|
if (!migrations.length)
|
|
57
|
-
|
|
50
|
+
await client.query("COMMIT");
|
|
58
51
|
else {
|
|
59
52
|
for (const migration of migrations)
|
|
60
|
-
|
|
53
|
+
migration.up && await migration.up(client), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [
|
|
61
54
|
migration.name
|
|
62
|
-
])
|
|
63
|
-
await client.query("COMMIT")
|
|
55
|
+
]);
|
|
56
|
+
await client.query("COMMIT");
|
|
64
57
|
}
|
|
65
58
|
} catch (e) {
|
|
66
|
-
console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK")
|
|
59
|
+
console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK");
|
|
67
60
|
try {
|
|
68
61
|
client.release(!1);
|
|
69
62
|
} catch (releaseErr) {
|
|
@@ -71,7 +64,7 @@ async function migrate(options) {
|
|
|
71
64
|
}
|
|
72
65
|
throw e;
|
|
73
66
|
}
|
|
74
|
-
onMigrationComplete && await onMigrationComplete()
|
|
67
|
+
onMigrationComplete && await onMigrationComplete();
|
|
75
68
|
try {
|
|
76
69
|
client.release(!1);
|
|
77
70
|
} catch (err) {
|
|
@@ -82,7 +75,7 @@ async function migrate(options) {
|
|
|
82
75
|
console.error("Error destroying connection:", destroyErr);
|
|
83
76
|
}
|
|
84
77
|
}
|
|
85
|
-
|
|
78
|
+
exitProcess();
|
|
86
79
|
}
|
|
87
80
|
function exitProcess() {
|
|
88
81
|
typeof process > "u" || isServerless || process.exit(0);
|
package/dist/esm/migrate.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/migrate.ts"],
|
|
4
|
-
"mappings": "AAUA,SAAS,gBAAgB;AAEzB,SAAS,mBAAmB;AAoB5B,MAAM,eAAe,CAAC,EACpB,QAAQ,IAAI,4BACZ,QAAQ,IAAI,0BACZ,QAAQ,IAAI,sBACZ,QAAQ,IAAI;AAGd,eAAsB,QAAQ,SAAyB;AACrD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,kBAAkB,CAAC;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["migrations"]
|
|
6
6
|
}
|
package/dist/esm/migrate.mjs
CHANGED
|
@@ -3,24 +3,20 @@ import { getDBClient } from "./getDBClient.mjs";
|
|
|
3
3
|
const isServerless = !!(process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.AWS_LAMBDA_RUNTIME_API || process.env.LAMBDA_RUNTIME_DIR || process.env.IS_SERVERLESS);
|
|
4
4
|
async function migrate(options) {
|
|
5
5
|
const {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const client = await getDBClient({
|
|
6
|
+
connectionString,
|
|
7
|
+
migrationsGlob,
|
|
8
|
+
createDatabases = [],
|
|
9
|
+
onMigrationComplete,
|
|
10
|
+
gitSha,
|
|
11
|
+
cvrDb,
|
|
12
|
+
changeDb
|
|
13
|
+
} = options,
|
|
14
|
+
client = await getDBClient({
|
|
16
15
|
connectionString
|
|
17
16
|
}),
|
|
18
|
-
hasDB = async name =>
|
|
19
|
-
const result = !!(await client.query(`
|
|
17
|
+
hasDB = async name => !!(await client.query(`
|
|
20
18
|
SELECT 1 FROM pg_database WHERE datname = '${name}'
|
|
21
19
|
`)).rows.length;
|
|
22
|
-
return console.info(result ? `${name} db exists` : `creating ${name} db`), result;
|
|
23
|
-
};
|
|
24
20
|
if (cvrDb || changeDb) {
|
|
25
21
|
if (!cvrDb) throw new Error("Missing cvrDb");
|
|
26
22
|
const zeroDBNames = [basename(cvrDb || ""), basename(changeDb || "")].filter(Boolean);
|
|
@@ -45,28 +41,27 @@ async function migrate(options) {
|
|
|
45
41
|
run
|
|
46
42
|
})).filter(({
|
|
47
43
|
name
|
|
48
|
-
}) => /^[\d]+/.test(name))
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
await client.query("COMMIT"), console.info("Successfully committed all migrations");
|
|
44
|
+
}) => /^[\d]+/.test(name)),
|
|
45
|
+
migrations = [...(await Promise.all(tsMigrationsSorted.map(async ({
|
|
46
|
+
name,
|
|
47
|
+
run
|
|
48
|
+
}) => {
|
|
49
|
+
if (appliedMigrationNames.has(name)) return null;
|
|
50
|
+
try {
|
|
51
|
+
return {
|
|
52
|
+
...(await run()),
|
|
53
|
+
name
|
|
54
|
+
};
|
|
55
|
+
} catch (error) {
|
|
56
|
+
throw console.error(`Failed to load TypeScript migration ${name}:`, error), error;
|
|
57
|
+
}
|
|
58
|
+
})).then(migrations2 => migrations2.filter(Boolean)))].sort((a, b) => a.name.localeCompare(b.name));
|
|
59
|
+
if (!migrations.length) await client.query("COMMIT");else {
|
|
60
|
+
for (const migration of migrations) migration.up && (await migration.up(client)), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [migration.name]);
|
|
61
|
+
await client.query("COMMIT");
|
|
67
62
|
}
|
|
68
63
|
} catch (e) {
|
|
69
|
-
console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK")
|
|
64
|
+
console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK");
|
|
70
65
|
try {
|
|
71
66
|
client.release(!1);
|
|
72
67
|
} catch (releaseErr) {
|
|
@@ -74,7 +69,7 @@ async function migrate(options) {
|
|
|
74
69
|
}
|
|
75
70
|
throw e;
|
|
76
71
|
}
|
|
77
|
-
onMigrationComplete && (await onMigrationComplete())
|
|
72
|
+
onMigrationComplete && (await onMigrationComplete());
|
|
78
73
|
try {
|
|
79
74
|
client.release(!1);
|
|
80
75
|
} catch (err) {
|
|
@@ -85,7 +80,7 @@ async function migrate(options) {
|
|
|
85
80
|
console.error("Error destroying connection:", destroyErr);
|
|
86
81
|
}
|
|
87
82
|
}
|
|
88
|
-
|
|
83
|
+
exitProcess();
|
|
89
84
|
}
|
|
90
85
|
function exitProcess() {
|
|
91
86
|
typeof process > "u" || isServerless || process.exit(0);
|
package/dist/esm/migrate.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["basename","getDBClient","isServerless","process","env","AWS_LAMBDA_FUNCTION_NAME","AWS_LAMBDA_RUNTIME_API","LAMBDA_RUNTIME_DIR","IS_SERVERLESS","migrate","options","connectionString","migrationsGlob","createDatabases","onMigrationComplete","gitSha","cvrDb","changeDb","
|
|
1
|
+
{"version":3,"names":["basename","getDBClient","isServerless","process","env","AWS_LAMBDA_FUNCTION_NAME","AWS_LAMBDA_RUNTIME_API","LAMBDA_RUNTIME_DIR","IS_SERVERLESS","migrate","options","connectionString","migrationsGlob","createDatabases","onMigrationComplete","gitSha","cvrDb","changeDb","client","hasDB","name","query","rows","length","Error","zeroDBNames","filter","Boolean","dbUrl","appliedMigrations","appliedMigrationNames","Set","map","row","tsMigrationsSorted","Object","entries","sort","a","b","localeCompare","file","run","replace","test","migrations","Promise","all","has","error","console","then","migrations2","migration","up","e","release","releaseErr","err","destroyErr","exitProcess","exit"],"sources":["../../src/migrate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@take-out/postgres",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/cjs",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@take-out/helpers": "0.1.
|
|
46
|
+
"@take-out/helpers": "0.1.11",
|
|
47
47
|
"async-retry": "^1.3.3",
|
|
48
48
|
"citty": "^0.1.6"
|
|
49
49
|
},
|
package/src/getDBClient.ts
CHANGED
|
@@ -66,9 +66,7 @@ async function tryToGetNewClientFromPool(
|
|
|
66
66
|
const clientFromPool = await retry(
|
|
67
67
|
async () => {
|
|
68
68
|
if (providedPool) {
|
|
69
|
-
console.info(`Connecting to provided pool...`)
|
|
70
69
|
const client = await providedPool.connect()
|
|
71
|
-
console.info(`Connected to pool`)
|
|
72
70
|
return client
|
|
73
71
|
}
|
|
74
72
|
|
|
@@ -87,9 +85,7 @@ async function tryToGetNewClientFromPool(
|
|
|
87
85
|
|
|
88
86
|
const poolCache = getOrCreatePoolCache(connectionString, configurations)
|
|
89
87
|
|
|
90
|
-
console.info(`Connecting to pool ${connectionString}...`)
|
|
91
88
|
const client = await poolCache.pool.connect()
|
|
92
|
-
console.info(`Connected to pool`)
|
|
93
89
|
return client
|
|
94
90
|
},
|
|
95
91
|
{
|
|
@@ -159,9 +155,6 @@ async function checkForTooManyConnections(
|
|
|
159
155
|
|
|
160
156
|
if (poolCache.maxConnections === null || poolCache.reservedConnections === null) {
|
|
161
157
|
const [maxConnections, reservedConnections] = await getConnectionLimits(client)
|
|
162
|
-
console.info(
|
|
163
|
-
`Max connections: ${maxConnections}, Reserved connections: ${reservedConnections}`
|
|
164
|
-
)
|
|
165
158
|
poolCache.maxConnections = maxConnections
|
|
166
159
|
poolCache.reservedConnections = reservedConnections
|
|
167
160
|
}
|
|
@@ -190,7 +183,6 @@ async function checkForTooManyConnections(
|
|
|
190
183
|
}
|
|
191
184
|
|
|
192
185
|
async function getConnectionLimits(client: PoolClient): Promise<[number, number]> {
|
|
193
|
-
console.info(`Getting connection limits...`)
|
|
194
186
|
const maxConnectionsResult = await client.query('SHOW max_connections')
|
|
195
187
|
const reservedConnectionResult = await client.query(
|
|
196
188
|
'SHOW superuser_reserved_connections'
|
|
@@ -208,7 +200,6 @@ async function getOpenedConnections(
|
|
|
208
200
|
): Promise<number> {
|
|
209
201
|
// For Aurora/RDS, we need to get the database name from connection string
|
|
210
202
|
const dbName = new URL(connectionString).pathname.slice(1)
|
|
211
|
-
console.info(`Getting opened connections...`)
|
|
212
203
|
const openConnectionsResult = await client.query(
|
|
213
204
|
'SELECT numbackends as opened_connections FROM pg_stat_database WHERE datname = $1',
|
|
214
205
|
[dbName]
|
|
@@ -217,7 +208,6 @@ async function getOpenedConnections(
|
|
|
217
208
|
openConnectionsResult.rows[0]?.opened_connections || 0,
|
|
218
209
|
10
|
|
219
210
|
)
|
|
220
|
-
console.info(`Opened connections: ${result}`)
|
|
221
211
|
return result
|
|
222
212
|
}
|
|
223
213
|
|
package/src/migrate.ts
CHANGED
|
@@ -48,8 +48,6 @@ export async function migrate(options: MigrateOptions) {
|
|
|
48
48
|
changeDb,
|
|
49
49
|
} = options
|
|
50
50
|
|
|
51
|
-
console.info(`Running migrations${gitSha ? ` for git version: ${gitSha}` : ''}`)
|
|
52
|
-
|
|
53
51
|
const client = await getDBClient({ connectionString })
|
|
54
52
|
|
|
55
53
|
const hasDB = async (name: string) => {
|
|
@@ -59,8 +57,6 @@ export async function migrate(options: MigrateOptions) {
|
|
|
59
57
|
`)
|
|
60
58
|
).rows.length
|
|
61
59
|
|
|
62
|
-
console.info(result ? `${name} db exists` : `creating ${name} db`)
|
|
63
|
-
|
|
64
60
|
return result
|
|
65
61
|
}
|
|
66
62
|
|
|
@@ -111,13 +107,10 @@ export async function migrate(options: MigrateOptions) {
|
|
|
111
107
|
}))
|
|
112
108
|
.filter(({ name }) => /^[\d]+/.test(name))
|
|
113
109
|
|
|
114
|
-
console.info(`Found ${tsMigrationsSorted.length} TypeScript migrations`)
|
|
115
|
-
|
|
116
110
|
// process TypeScript migrations
|
|
117
111
|
const tsMigrations: Migration[] = await Promise.all(
|
|
118
112
|
tsMigrationsSorted.map(async ({ name, run }) => {
|
|
119
113
|
if (appliedMigrationNames.has(name)) {
|
|
120
|
-
console.info(`TypeScript migration applied already: ${name}`)
|
|
121
114
|
return null
|
|
122
115
|
}
|
|
123
116
|
try {
|
|
@@ -134,32 +127,23 @@ export async function migrate(options: MigrateOptions) {
|
|
|
134
127
|
const migrations = [...tsMigrations].sort((a, b) => a.name.localeCompare(b.name))
|
|
135
128
|
|
|
136
129
|
if (!migrations.length) {
|
|
137
|
-
console.info(`No migrations to apply!`)
|
|
138
130
|
await client.query('COMMIT')
|
|
139
131
|
} else {
|
|
140
132
|
for (const migration of migrations) {
|
|
141
|
-
// don't try catch here, we want to exit and rollback all migrations if one fails
|
|
142
|
-
console.info(`Migrating: ${migration.name}`)
|
|
143
|
-
|
|
144
133
|
if (migration.up) {
|
|
145
|
-
// TypeScript migration
|
|
146
|
-
console.info(`Applying migration: ${migration.name}`)
|
|
147
134
|
await migration.up(client)
|
|
148
135
|
}
|
|
149
136
|
|
|
150
137
|
await client.query('INSERT INTO public.migrations (name) VALUES ($1)', [
|
|
151
138
|
migration.name,
|
|
152
139
|
])
|
|
153
|
-
console.info(`Successfully applied migration: ${migration.name}`)
|
|
154
140
|
}
|
|
155
141
|
|
|
156
142
|
await client.query('COMMIT')
|
|
157
|
-
console.info(`Successfully committed all migrations`)
|
|
158
143
|
}
|
|
159
144
|
} catch (e) {
|
|
160
145
|
console.error(`Migration failed, rolling back:`, e)
|
|
161
146
|
await client.query('ROLLBACK')
|
|
162
|
-
console.info(`Releasing client connection...`)
|
|
163
147
|
try {
|
|
164
148
|
client.release(false)
|
|
165
149
|
} catch (releaseErr) {
|
|
@@ -172,7 +156,6 @@ export async function migrate(options: MigrateOptions) {
|
|
|
172
156
|
await onMigrationComplete()
|
|
173
157
|
}
|
|
174
158
|
|
|
175
|
-
console.info(`Releasing client connection...`)
|
|
176
159
|
try {
|
|
177
160
|
// don't destroy the connection forcefully - let it return to pool gracefully
|
|
178
161
|
client.release(false)
|
|
@@ -185,8 +168,6 @@ export async function migrate(options: MigrateOptions) {
|
|
|
185
168
|
}
|
|
186
169
|
}
|
|
187
170
|
|
|
188
|
-
console.info(`🙌 Done migrating`)
|
|
189
|
-
|
|
190
171
|
exitProcess()
|
|
191
172
|
}
|
|
192
173
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDBClient.d.ts","sourceRoot":"","sources":["../src/getDBClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAA;AAKnD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,CAAA;AA+BD,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBvF;
|
|
1
|
+
{"version":3,"file":"getDBClient.d.ts","sourceRoot":"","sources":["../src/getDBClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAA;AAKnD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,CAAA;AA+BD,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBvF;AA4CD,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,GAAG,EAAE,EACd,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAqC9B;AAuED,wBAAsB,YAAY,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAcvF"}
|
package/types/migrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAEpC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAUD,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAEpC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAUD,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,iBAoIpD"}
|