@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.
@@ -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
- const poolCache = getOrCreatePoolCache(connectionString, {
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
- console.info(`Max connections: ${maxConnections}, Reserved connections: ${reservedConnections}`), poolCache.maxConnections = maxConnections, poolCache.reservedConnections = reservedConnections;
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
- console.info("Getting opened connections...");
138
- const openConnectionsResult = await client.query("SELECT numbackends as opened_connections FROM pg_stat_database WHERE datname = $1", [dbName]),
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 {
@@ -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
- console.info("Connecting to provided pool...");
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
- const poolCache = getOrCreatePoolCache(connectionString, {
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
- console.info(
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
- ), result = Number.parseInt(
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": "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",
5
- "names": ["pg", "client"]
4
+ "mappings": "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",
5
+ "names": ["pg"]
6
6
  }
@@ -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
- connectionString,
32
- migrationsGlob,
33
- createDatabases = [],
34
- onMigrationComplete,
35
- gitSha,
36
- cvrDb,
37
- changeDb
38
- } = options;
39
- console.info(`Running migrations${gitSha ? ` for git version: ${gitSha}` : ""}`);
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
- console.info(`Found ${tsMigrationsSorted.length} TypeScript migrations`);
75
- const migrations = [...(await Promise.all(tsMigrationsSorted.map(async ({
76
- name,
77
- run
78
- }) => {
79
- if (appliedMigrationNames.has(name)) return console.info(`TypeScript migration applied already: ${name}`), null;
80
- try {
81
- return {
82
- ...(await run()),
83
- name
84
- };
85
- } catch (error) {
86
- throw console.error(`Failed to load TypeScript migration ${name}:`, error), error;
87
- }
88
- })).then(migrations2 => migrations2.filter(Boolean)))].sort((a, b) => a.name.localeCompare(b.name));
89
- if (!migrations.length) console.info("No migrations to apply!"), await client.query("COMMIT");else {
90
- for (const migration of migrations) console.info(`Migrating: ${migration.name}`), migration.up && (console.info(`Applying migration: ${migration.name}`), await migration.up(client)), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [migration.name]), console.info(`Successfully applied migration: ${migration.name}`);
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"), console.info("Releasing client connection...");
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()), console.info("Releasing client connection...");
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
- console.info("\u{1F64C} Done migrating"), exitProcess();
108
+ exitProcess();
114
109
  }
115
110
  function exitProcess() {
116
111
  typeof process > "u" || isServerless || process.exit(0);
@@ -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 console.info(`TypeScript migration applied already: ${name}`), null;
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
- console.info("No migrations to apply!"), await client.query("COMMIT");
68
+ await client.query("COMMIT");
76
69
  else {
77
70
  for (const migration of migrations)
78
- console.info(`Migrating: ${migration.name}`), migration.up && (console.info(`Applying migration: ${migration.name}`), await migration.up(client)), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [
71
+ migration.up && await migration.up(client), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [
79
72
  migration.name
80
- ]), console.info(`Successfully applied migration: ${migration.name}`);
81
- await client.query("COMMIT"), console.info("Successfully committed all migrations");
73
+ ]);
74
+ await client.query("COMMIT");
82
75
  }
83
76
  } catch (e) {
84
- console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK"), console.info("Releasing client connection...");
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(), console.info("Releasing client connection...");
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
- console.info("\u{1F64C} Done migrating"), exitProcess();
96
+ exitProcess();
104
97
  }
105
98
  function exitProcess() {
106
99
  typeof process > "u" || isServerless || process.exit(0);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/migrate.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["migrations"]
6
6
  }
@@ -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
- console.info("Connecting to provided pool...");
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
- const poolCache = getOrCreatePoolCache(connectionString, {
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
- console.info(
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
- ), result = Number.parseInt(
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": "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",
5
- "names": ["client"]
4
+ "mappings": "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",
5
+ "names": []
6
6
  }
@@ -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
- const poolCache = getOrCreatePoolCache(connectionString, {
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
- console.info(`Max connections: ${maxConnections}, Reserved connections: ${reservedConnections}`), poolCache.maxConnections = maxConnections, poolCache.reservedConnections = reservedConnections;
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
- console.info("Getting opened connections...");
100
- const openConnectionsResult = await client.query("SELECT numbackends as opened_connections FROM pg_stat_database WHERE datname = $1", [dbName]),
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","info","client2","connect","poolCache","connectionTimeoutMillis","idleTimeoutMillis","allowExitOnIdle","minTimeout","factor","maxTimeout","queryDb","queryText","params","query","message","String","checkForTooManyConnections","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","result","opened_connections","getNewClient","tryToGetNewClient","configurations","newClient","Client"],"sources":["../../src/getDBClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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":[]}
@@ -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 console.info(`TypeScript migration applied already: ${name}`), null;
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
- console.info("No migrations to apply!"), await client.query("COMMIT");
50
+ await client.query("COMMIT");
58
51
  else {
59
52
  for (const migration of migrations)
60
- console.info(`Migrating: ${migration.name}`), migration.up && (console.info(`Applying migration: ${migration.name}`), await migration.up(client)), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [
53
+ migration.up && await migration.up(client), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [
61
54
  migration.name
62
- ]), console.info(`Successfully applied migration: ${migration.name}`);
63
- await client.query("COMMIT"), console.info("Successfully committed all migrations");
55
+ ]);
56
+ await client.query("COMMIT");
64
57
  }
65
58
  } catch (e) {
66
- console.error("Migration failed, rolling back:", e), await client.query("ROLLBACK"), console.info("Releasing client connection...");
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(), console.info("Releasing client connection...");
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
- console.info("\u{1F64C} Done migrating"), exitProcess();
78
+ exitProcess();
86
79
  }
87
80
  function exitProcess() {
88
81
  typeof process > "u" || isServerless || process.exit(0);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/migrate.ts"],
4
- "mappings": "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",
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,SAEE,SAAS,MAAM,YAAY,EAAE,iBAAiB,CAAC,GAE/C,QAAQ,OAAO,SACJ,CAAC,EACd,MAAM,OAAO,MAAM;AAAA,qDAC4B,IAAI;AAAA,OAClD,GACD,KAAK;AAMT,MAAI,SAAS,UAAU;AACrB,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,eAAe;AAGjC,UAAM,cAAc,CAAC,SAAS,SAAS,EAAE,GAAG,SAAS,YAAY,EAAE,CAAC,EAAE,OAAO,OAAO;AAEpF,eAAW,QAAQ;AACjB,MAAM,MAAM,MAAM,IAAI,KACpB,MAAM,OAAO,MAAM,mBAAmB,IAAI,GAAG;AAAA,EAGnD;AAGA,aAAW,SAAS,iBAAiB;AACnC,UAAM,OAAO,SAAS,KAAK;AAC3B,IAAM,MAAM,MAAM,IAAI,KACpB,MAAM,OAAO,MAAM,mBAAmB,IAAI,GAAG;AAAA,EAEjD;AAEA,MAAI;AACF,UAAM,OAAO,MAAM,OAAO,GAG1B,MAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMlB;AAED,UAAM,oBAAoB,MAAM,OAAO,MAAM,oCAAoC,GAC3E,wBAAwB,IAAI,IAAI,kBAAkB,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAG7E,qBAAqB,OAAO,QAAQ,cAAc,EACrD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EACrC,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO;AAAA,MACrB,MAAM,SAAS,IAAI,EAAE,QAAQ,OAAO,EAAE;AAAA,MACtC;AAAA,IACF,EAAE,EACD,OAAO,CAAC,EAAE,KAAK,MAAM,SAAS,KAAK,IAAI,CAAC,GAmBrC,aAAa,CAAC,GAhBc,MAAM,QAAQ;AAAA,MAC9C,mBAAmB,IAAI,OAAO,EAAE,MAAM,IAAI,MAAM;AAC9C,YAAI,sBAAsB,IAAI,IAAI;AAChC,iBAAO;AAET,YAAI;AAEF,iBAAO,EAAE,GADU,MAAM,IAAI,GACN,KAAK;AAAA,QAC9B,SAAS,OAAO;AACd,wBAAQ,MAAM,uCAAuC,IAAI,KAAK,KAAK,GAC7D;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH,EAAE,KAAK,CAACA,gBAAeA,YAAW,OAAO,OAAO,CAAgB,CAG7B,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAEhF,QAAI,CAAC,WAAW;AACd,YAAM,OAAO,MAAM,QAAQ;AAAA,SACtB;AACL,iBAAW,aAAa;AACtB,QAAI,UAAU,MACZ,MAAM,UAAU,GAAG,MAAM,GAG3B,MAAM,OAAO,MAAM,oDAAoD;AAAA,UACrE,UAAU;AAAA,QACZ,CAAC;AAGH,YAAM,OAAO,MAAM,QAAQ;AAAA,IAC7B;AAAA,EACF,SAAS,GAAG;AACV,YAAQ,MAAM,mCAAmC,CAAC,GAClD,MAAM,OAAO,MAAM,UAAU;AAC7B,QAAI;AACF,aAAO,QAAQ,EAAK;AAAA,IACtB,SAAS,YAAY;AACnB,cAAQ,MAAM,8CAA8C,UAAU;AAAA,IACxE;AACA,UAAM;AAAA,EACR;AAEA,EAAI,uBACF,MAAM,oBAAoB;AAG5B,MAAI;AAEF,WAAO,QAAQ,EAAK;AAAA,EACtB,SAAS,KAAK;AACZ,YAAQ,MAAM,6DAA6D,GAAG;AAC9E,QAAI;AACF,aAAO,QAAQ,EAAI;AAAA,IACrB,SAAS,YAAY;AACnB,cAAQ,MAAM,gCAAgC,UAAU;AAAA,IAC1D;AAAA,EACF;AAEA,cAAY;AACd;AAEA,SAAS,cAAc;AACrB,EAAI,OAAO,UAAY,OAEnB,gBACJ,QAAQ,KAAK,CAAC;AAChB;",
5
5
  "names": ["migrations"]
6
6
  }
@@ -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
- connectionString,
7
- migrationsGlob,
8
- createDatabases = [],
9
- onMigrationComplete,
10
- gitSha,
11
- cvrDb,
12
- changeDb
13
- } = options;
14
- console.info(`Running migrations${gitSha ? ` for git version: ${gitSha}` : ""}`);
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
- console.info(`Found ${tsMigrationsSorted.length} TypeScript migrations`);
50
- const migrations = [...(await Promise.all(tsMigrationsSorted.map(async ({
51
- name,
52
- run
53
- }) => {
54
- if (appliedMigrationNames.has(name)) return console.info(`TypeScript migration applied already: ${name}`), null;
55
- try {
56
- return {
57
- ...(await run()),
58
- name
59
- };
60
- } catch (error) {
61
- throw console.error(`Failed to load TypeScript migration ${name}:`, error), error;
62
- }
63
- })).then(migrations2 => migrations2.filter(Boolean)))].sort((a, b) => a.name.localeCompare(b.name));
64
- if (!migrations.length) console.info("No migrations to apply!"), await client.query("COMMIT");else {
65
- for (const migration of migrations) console.info(`Migrating: ${migration.name}`), migration.up && (console.info(`Applying migration: ${migration.name}`), await migration.up(client)), await client.query("INSERT INTO public.migrations (name) VALUES ($1)", [migration.name]), console.info(`Successfully applied migration: ${migration.name}`);
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"), console.info("Releasing client connection...");
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()), console.info("Releasing client connection...");
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
- console.info("\u{1F64C} Done migrating"), exitProcess();
83
+ exitProcess();
89
84
  }
90
85
  function exitProcess() {
91
86
  typeof process > "u" || isServerless || process.exit(0);
@@ -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","console","info","client","hasDB","name","result","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","then","migrations2","migration","up","e","release","releaseErr","err","destroyErr","exitProcess","exit"],"sources":["../../src/migrate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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.9",
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.9",
46
+ "@take-out/helpers": "0.1.11",
47
47
  "async-retry": "^1.3.3",
48
48
  "citty": "^0.1.6"
49
49
  },
@@ -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;AAgDD,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;AA6ED,wBAAsB,YAAY,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAcvF"}
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"}
@@ -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,iBAuJpD"}
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"}