Use class-extends to wrap Pool (#1541)

* Use class-extends to wrap Pool

* Minimize diff

* Test `BoundPool` inheritance

Co-authored-by: Charmander <~@charmander.me>
Co-authored-by: Brian C <brian.m.carlson@gmail.com>
This commit is contained in:
Natalie Wolfe 2020-01-15 13:10:59 -08:00 committed by Brian M. Carlson
parent e85afe157f
commit 224703fc63
2 changed files with 30 additions and 12 deletions

View File

@ -7,25 +7,18 @@
* README.md file in the root directory of this source tree.
*/
var util = require('util')
var Client = require('./client')
var defaults = require('./defaults')
var Connection = require('./connection')
var Pool = require('pg-pool')
const checkConstructor = require('./compat/check-constructor')
const poolFactory = (Client) => {
var BoundPool = function (options) {
// eslint-disable-next-line no-eval
checkConstructor('pg.Pool', 'PG-POOL-NEW', () => eval('new.target'))
var config = Object.assign({ Client: Client }, options)
return new Pool(config)
return class BoundPool extends Pool {
constructor (options) {
var config = Object.assign({ Client: Client }, options)
super(config)
}
}
util.inherits(BoundPool, Pool)
return BoundPool
}
var PG = function (clientConstructor) {

View File

@ -0,0 +1,25 @@
"use strict"
const helper = require('./../test-helper')
const assert = require('assert')
const suite = new helper.Suite()
suite.testAsync('BoundPool can be subclassed', async () => {
const Pool = helper.pg.Pool;
class SubPool extends Pool {
}
const subPool = new SubPool()
const client = await subPool.connect()
client.release()
await subPool.end()
assert(subPool instanceof helper.pg.Pool)
})
suite.test('calling pg.Pool without new throws', () => {
const Pool = helper.pg.Pool;
assert.throws(() => {
const pool = Pool()
})
})