mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
* Document client.escapeIdentifier and client.escapeLiteral Per #1978 it seems that these client APIs are undocumented. Added documentation for these functions along with some examples and relevant links. * Fix typos in new docs * Migrate escapeIdentifier and escapeLiteral from Client to PG These are standalone utility functions, they do not need a client instance to function. Changes made: - Refactored escapeIdentifer and escapeLiteral from client class to functions in utils - Update PG to export escapeIdentifier and escapeLiteral - Migrated tests for Client.escapeIdentifier and Client.escapeLiteral to tests for utils - Updated documentation, added a "utilities" page where these helpers are discussed **note** this is a breaking change. Users who used these functions (previously undocumented) on instances of Client, or via Client.prototype. * Export escapeIdentifier and escapeLiteral from PG These are standalone utility functions, they should not depend on a client instance. Changes made: - Refactored escapeIdentifer and escapeLiteral from client class to functions in utils - Re-exported functions on client for backwards compatibility - Update PG to export escapeIdentifier and escapeLiteral - Updated tests to validate the newly exported functions from both entry points - Updated documentation, added a "utilities" page where these helpers are discussed * Ensure escape functions work via Client.prototype Updated changes such that escapeIdentifier and escapeLiteral are usable via the client prototype Updated tests to check for both entry points in client
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
'use strict'
|
|
|
|
var Client = require('./client')
|
|
var defaults = require('./defaults')
|
|
var Connection = require('./connection')
|
|
var Pool = require('pg-pool')
|
|
const { DatabaseError } = require('pg-protocol')
|
|
const { escapeIdentifier, escapeLiteral } = require('./utils')
|
|
|
|
const poolFactory = (Client) => {
|
|
return class BoundPool extends Pool {
|
|
constructor(options) {
|
|
super(options, Client)
|
|
}
|
|
}
|
|
}
|
|
|
|
var PG = function (clientConstructor) {
|
|
this.defaults = defaults
|
|
this.Client = clientConstructor
|
|
this.Query = this.Client.Query
|
|
this.Pool = poolFactory(this.Client)
|
|
this._pools = []
|
|
this.Connection = Connection
|
|
this.types = require('pg-types')
|
|
this.DatabaseError = DatabaseError
|
|
this.escapeIdentifier = escapeIdentifier
|
|
this.escapeLiteral = escapeLiteral
|
|
}
|
|
|
|
if (typeof process.env.NODE_PG_FORCE_NATIVE !== 'undefined') {
|
|
module.exports = new PG(require('./native'))
|
|
} else {
|
|
module.exports = new PG(Client)
|
|
|
|
// lazy require native module...the native module may not have installed
|
|
Object.defineProperty(module.exports, 'native', {
|
|
configurable: true,
|
|
enumerable: false,
|
|
get() {
|
|
var native = null
|
|
try {
|
|
native = new PG(require('./native'))
|
|
} catch (err) {
|
|
if (err.code !== 'MODULE_NOT_FOUND') {
|
|
throw err
|
|
}
|
|
}
|
|
|
|
// overwrite module.exports.native so that getter is never called again
|
|
Object.defineProperty(module.exports, 'native', {
|
|
value: native,
|
|
})
|
|
|
|
return native
|
|
},
|
|
})
|
|
}
|