Estructura inicial del proyecto
This commit is contained in:
105
backend/node_modules/mssql/lib/msnodesqlv8/connection-pool.js
generated
vendored
Normal file
105
backend/node_modules/mssql/lib/msnodesqlv8/connection-pool.js
generated
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
'use strict'
|
||||
|
||||
const msnodesql = require('msnodesqlv8')
|
||||
const debug = require('debug')('mssql:msv8')
|
||||
const BaseConnectionPool = require('../base/connection-pool')
|
||||
const { IDS, INCREMENT } = require('../utils')
|
||||
const shared = require('../shared')
|
||||
const ConnectionError = require('../error/connection-error')
|
||||
const { platform } = require('node:os')
|
||||
const { build } = require('@tediousjs/connection-string')
|
||||
const { CHANNELS, publish } = require('../diagnostics')
|
||||
|
||||
const DEFAULT_CONNECTION_DRIVER = ['darwin', 'linux'].includes(platform()) ? 'ODBC Driver 17 for SQL Server' : 'SQL Server Native Client 11.0'
|
||||
|
||||
class ConnectionPool extends BaseConnectionPool {
|
||||
_poolCreate () {
|
||||
return new shared.Promise((resolve, reject) => {
|
||||
this.config.requestTimeout = this.config.requestTimeout ?? this.config.timeout ?? 15000
|
||||
|
||||
const cfg = {
|
||||
conn_str: this.config.connectionString,
|
||||
conn_timeout: (this.config.connectionTimeout ?? this.config.timeout ?? 15000) / 1000
|
||||
}
|
||||
|
||||
if (!this.config.connectionString) {
|
||||
cfg.conn_str = build({
|
||||
Driver: this.config.driver && this.config.driver !== 'msnodesqlv8' ? this.config.driver : DEFAULT_CONNECTION_DRIVER,
|
||||
Server: this.config.options.instanceName ? `${this.config.server}\\${this.config.options.instanceName}` : `${this.config.server},${this.config.port}`,
|
||||
Database: this.config.database,
|
||||
Uid: this.config.user,
|
||||
Pwd: this.config.password,
|
||||
Trusted_Connection: !!this.config.options.trustedConnection,
|
||||
Encrypt: !!this.config.options.encrypt
|
||||
})
|
||||
}
|
||||
|
||||
const connedtionId = INCREMENT.Connection++
|
||||
debug('pool(%d): connection #%d created', IDS.get(this), connedtionId)
|
||||
debug('connection(%d): establishing', connedtionId)
|
||||
|
||||
if (typeof this.config.beforeConnect === 'function') {
|
||||
this.config.beforeConnect(cfg)
|
||||
}
|
||||
|
||||
msnodesql.open(cfg, (err, tds) => {
|
||||
if (err) {
|
||||
let customErr = err?.details
|
||||
if (customErr instanceof Array && (customErr = customErr.at(-1))) {
|
||||
err.message = customErr.message
|
||||
err.code = customErr.code
|
||||
}
|
||||
|
||||
err = new ConnectionError(err.message, err.code)
|
||||
return reject(err)
|
||||
}
|
||||
|
||||
tds.setUseNumericString(true)
|
||||
|
||||
IDS.add(tds, 'Connection', connedtionId)
|
||||
tds.setUseUTC(this.config.options.useUTC)
|
||||
debug('connection(%d): established', IDS.get(tds))
|
||||
publish(CHANNELS.CONNECTION_CREATE, () => ({
|
||||
connectionId: IDS.get(tds),
|
||||
poolId: IDS.get(this),
|
||||
server: this.config.server,
|
||||
database: this.config.database
|
||||
}))
|
||||
resolve(tds)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
_poolValidate (tds) {
|
||||
if (tds && !tds.hasError) {
|
||||
return !this.config.validateConnection || new shared.Promise((resolve) => {
|
||||
tds.query('SELECT 1;', (err) => {
|
||||
resolve(!err)
|
||||
})
|
||||
})
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
_poolDestroy (tds) {
|
||||
return new shared.Promise((resolve, reject) => {
|
||||
if (!tds) {
|
||||
resolve()
|
||||
return
|
||||
}
|
||||
const connectionId = IDS.get(tds)
|
||||
const poolId = IDS.get(this)
|
||||
debug('connection(%d): destroying', connectionId)
|
||||
tds.close(() => {
|
||||
debug('connection(%d): destroyed', connectionId)
|
||||
publish(CHANNELS.CONNECTION_DESTROY, () => ({
|
||||
connectionId,
|
||||
poolId
|
||||
}))
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ConnectionPool
|
||||
Reference in New Issue
Block a user