From 8cd1389de3c5c34c14eab2d48f6e59903edf18fb Mon Sep 17 00:00:00 2001 From: csrapr <26280794+csrapr@users.noreply.github.com> Date: Fri, 26 Feb 2021 18:41:53 +0000 Subject: [PATCH] Feat: upgrade pg-promise and fix breaking changes --- lib/admin/settings-loader.js | 6 +- lib/cash-in/cash-in-atomic.js | 9 +-- lib/cash-in/cash-in-tx.js | 6 +- lib/cash-out/cash-out-atomic.js | 8 +- lib/cash-out/cash-out-tx.js | 6 +- package-lock.json | 125 ++++++++++++++++---------------- package.json | 2 +- 7 files changed, 79 insertions(+), 83 deletions(-) diff --git a/lib/admin/settings-loader.js b/lib/admin/settings-loader.js index a62314bb..eccd677f 100644 --- a/lib/admin/settings-loader.js +++ b/lib/admin/settings-loader.js @@ -220,7 +220,7 @@ function addCryptoDefaults (oldConfig, newFields) { function modifyConfig (newFields) { const TransactionMode = pgp.txMode.TransactionMode const isolationLevel = pgp.txMode.isolationLevel - const tmSRD = new TransactionMode({tiLevel: isolationLevel.serializable}) + const mode = new TransactionMode({ tiLevel: isolationLevel.serializable }) function transaction (t) { return loadRecentConfig() @@ -231,9 +231,7 @@ function modifyConfig (newFields) { }) } - transaction.txMode = tmSRD - - return db.tx(transaction) + return db.tx({ mode }, transaction) } module.exports = { diff --git a/lib/cash-in/cash-in-atomic.js b/lib/cash-in/cash-in-atomic.js index a10f0b0f..c4238bb3 100644 --- a/lib/cash-in/cash-in-atomic.js +++ b/lib/cash-in/cash-in-atomic.js @@ -5,13 +5,9 @@ const E = require('../error') const cashInLow = require('./cash-in-low') -module.exports = {atomic} +module.exports = { atomic } function atomic (machineTx, pi) { - const TransactionMode = pgp.txMode.TransactionMode - const isolationLevel = pgp.txMode.isolationLevel - const tmSRD = new TransactionMode({tiLevel: isolationLevel.serializable}) - function transaction (t) { const sql = 'select * from cash_in_txs where id=$1' const sql2 = 'select * from bills where cash_in_txs_id=$1' @@ -33,9 +29,6 @@ function atomic (machineTx, pi) { }) }) } - - transaction.txMode = tmSRD - return transaction } diff --git a/lib/cash-in/cash-in-tx.js b/lib/cash-in/cash-in-tx.js index c1437834..cde148cb 100644 --- a/lib/cash-in/cash-in-tx.js +++ b/lib/cash-in/cash-in-tx.js @@ -19,7 +19,11 @@ const MAX_PENDING = 10 module.exports = { post, monitorPending, cancel, PENDING_INTERVAL } function post (machineTx, pi) { - return db.tx(cashInAtomic.atomic(machineTx, pi)) + const TransactionMode = pgp.txMode.TransactionMode + const isolationLevel = pgp.txMode.isolationLevel + const mode = new TransactionMode({ tiLevel: isolationLevel.serializable }) + + return db.tx({ mode }, cashInAtomic.atomic(machineTx, pi)) .then(r => { const updatedTx = r.tx let blacklisted = false diff --git a/lib/cash-out/cash-out-atomic.js b/lib/cash-out/cash-out-atomic.js index f3365123..a72d28fc 100644 --- a/lib/cash-out/cash-out-atomic.js +++ b/lib/cash-out/cash-out-atomic.js @@ -11,13 +11,9 @@ const cashOutLow = require('./cash-out-low') const toObj = helper.toObj -module.exports = {atomic} +module.exports = { atomic } function atomic (tx, pi, fromClient) { - const TransactionMode = pgp.txMode.TransactionMode - const isolationLevel = pgp.txMode.isolationLevel - const tmSRD = new TransactionMode({tiLevel: isolationLevel.serializable}) - function transaction (t) { const sql = 'select * from cash_out_txs where id=$1' @@ -32,8 +28,6 @@ function atomic (tx, pi, fromClient) { }) } - transaction.txMode = tmSRD - return transaction } diff --git a/lib/cash-out/cash-out-tx.js b/lib/cash-out/cash-out-tx.js index 9164ff83..17901e40 100644 --- a/lib/cash-out/cash-out-tx.js +++ b/lib/cash-out/cash-out-tx.js @@ -37,7 +37,11 @@ function selfPost (tx, pi) { } function post (tx, pi, fromClient = true) { - return db.tx(cashOutAtomic.atomic(tx, pi, fromClient)) + const TransactionMode = pgp.txMode.TransactionMode + const isolationLevel = pgp.txMode.isolationLevel + const mode = new TransactionMode({ tiLevel: isolationLevel.serializable }) + + return db.tx({ mode }, cashOutAtomic.atomic(tx, pi, fromClient)) .then(txVector => { const [, newTx, justAuthorized] = txVector return postProcess(txVector, justAuthorized, pi) diff --git a/package-lock.json b/package-lock.json index 7593af23..dc9e4d8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3336,6 +3336,11 @@ "util": ">= 0.4.9" } }, + "assert-options": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/assert-options/-/assert-options-0.7.0.tgz", + "integrity": "sha512-7q9uNH/Dh8gFgpIIb9ja8PJEWA5AQy3xnBC8jtKs8K/gNVCr1K6kIvlm59HUyYgvM7oEDoLzGgPcGd9FqhtXEQ==" + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -4955,9 +4960,9 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "buffer-writer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", - "integrity": "sha1-Iqk2kB4wKa/NdUfrRIfOtpejvwg=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" }, "buffer-xor": { "version": "1.0.3", @@ -11978,11 +11983,6 @@ "tmpl": "1.0.x" } }, - "manakin": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/manakin/-/manakin-0.5.2.tgz", - "integrity": "sha512-pfDSB7QYoVg0Io4KMV9hhPoXpj6p0uBscgtyUSKCOFZe8bqgbpStfgnKIbF/ulnr6U3ICu4OqdyxAqBgOhZwBQ==" - }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -13228,9 +13228,9 @@ } }, "packet-reader": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.3.1.tgz", - "integrity": "sha1-zWLmCvjX/qinBexP+ZCHHEaHHyc=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" }, "pandemonium": { "version": "1.5.0", @@ -13377,41 +13377,42 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pg": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-7.4.3.tgz", - "integrity": "sha1-97b5P1NA7MJZavu5ShPj1rYJg0s=", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.5.1.tgz", + "integrity": "sha512-9wm3yX9lCfjvA98ybCyw2pADUivyNWT/yIP4ZcDVpMN0og70BUWYEGXPCTAQdGTAqnytfRADb7NERrY1qxhIqw==", "requires": { - "buffer-writer": "1.0.1", - "packet-reader": "0.3.1", - "pg-connection-string": "0.1.3", - "pg-pool": "~2.0.3", - "pg-types": "~1.12.1", - "pgpass": "1.x", - "semver": "4.3.2" + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.4.0", + "pg-pool": "^3.2.2", + "pg-protocol": "^1.4.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" }, "dependencies": { "pg-types": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.12.1.tgz", - "integrity": "sha1-1kCH45A7WP+q0nnnWVxSIIoUw9I=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "requires": { - "postgres-array": "~1.0.0", + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.0", + "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, - "semver": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=" + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" } } }, "pg-connection-string": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", - "integrity": "sha1-2hhHsglA5C7hSSvq9l1J2RskXfc=" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.4.0.tgz", + "integrity": "sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==" }, "pg-int8": { "version": "1.0.1", @@ -13419,9 +13420,9 @@ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, "pg-minify": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/pg-minify/-/pg-minify-0.5.5.tgz", - "integrity": "sha512-7Pf9h6nV1RFqED1hkRosePqvpPwNUUtW06TT4+lHwzesxa5gffxkShTjYH6JXV5sSSfh5+2yHOTTWEkCyCQ0Eg==" + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/pg-minify/-/pg-minify-1.6.2.tgz", + "integrity": "sha512-1KdmFGGTP6jplJoI8MfvRlfvMiyBivMRP7/ffh4a11RUFJ7kC2J0ZHlipoKiH/1hz+DVgceon9U2qbaHpPeyPg==" }, "pg-native": { "version": "3.0.0", @@ -13457,19 +13458,19 @@ } }, "pg-pool": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.10.tgz", - "integrity": "sha512-qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg==" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.2.tgz", + "integrity": "sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA==" }, "pg-promise": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/pg-promise/-/pg-promise-7.5.4.tgz", - "integrity": "sha512-wuL+13P+Ris8MEUpdatv7OH5eHEahWBNmgGHEwLd88fym/eMAjxrFV+3jRKO7bFAyDTvo3wNcmuntYwR9eJnvg==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/pg-promise/-/pg-promise-10.9.2.tgz", + "integrity": "sha512-ewelfzZeSPe5sbgd5ylB6edVXqoD8AH/fqZj4wPLL0242vXtkFY3JuUqt3mfvTruOqZHhoINpoXTfmC9UXbZ7A==", "requires": { - "manakin": "~0.5.1", - "pg": "~7.4.1", - "pg-minify": "~0.5.4", - "spex": "~2.0.2" + "assert-options": "0.7.0", + "pg": "8.5.1", + "pg-minify": "1.6.2", + "spex": "3.2.0" } }, "pg-protocol": { @@ -13490,11 +13491,21 @@ } }, "pgpass": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz", - "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", + "integrity": "sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==", "requires": { - "split": "^1.0.0" + "split2": "^3.1.1" + }, + "dependencies": { + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "requires": { + "readable-stream": "^3.0.0" + } + } } }, "phantomjs-prebuilt": { @@ -15860,17 +15871,9 @@ "dev": true }, "spex": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/spex/-/spex-2.0.2.tgz", - "integrity": "sha512-LU6TS3qTEpRth+FnNs/fIWEmridYN7JmaN2k1Jk31XVC4ex7+wYxiHMnKguRxS7oKjbOFl4H6seeWNDFFgkVRg==" - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { - "through": "2" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spex/-/spex-3.2.0.tgz", + "integrity": "sha512-9srjJM7NaymrpwMHvSmpDeIK5GoRMX/Tq0E8aOlDPS54dDnDUIp30DrP9SphMPEETDLzEM9+4qo+KipmbtPecg==" }, "split-string": { "version": "3.1.0", diff --git a/package.json b/package.json index b4b118bb..932e3953 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "p-each-series": "^1.0.0", "p-retry": "^4.4.0", "pg-native": "^3.0.0", - "pg-promise": "^7.4.1", + "pg-promise": "^10.9.2", "pify": "^3.0.0", "pretty-ms": "^2.1.0", "promise-sequential": "^1.1.1",