mssql
Version:
Microsoft SQL Server client for Node.js.
116 lines (100 loc) • 2.67 kB
JavaScript
const mssql = require('./')
// const wtf = require('wtfnode')
const sqlConfig = {
password: 'Upper_l0wercase',
database: 'di_production',
// connectionTimeout: undefined,
// requestTimeout: 30000,
stream: false,
options: {encrypt: true},
port: 1433,
user: 'sa',
server: 'localhost',
pool: {
acquireTimeoutMillis: 1000,
propagateCreateError: true,
},
}
let errorCount = 0
let pool
let reconnectTimer
let startTime
function createPool() {
return new mssql.ConnectionPool(sqlConfig)
}
const poolRequest = createPool()
function connect () {
console.log('trying to connect to server')
// const poolRequest = createPool()
mssql.on('error', () => {
console.log('error event fired')
})
return mssql.connect(sqlConfig).then((connection) => {
// setTimeout(connection.close.bind(connection), 2000)
console.log('connection established')
console.log(connection)
connection.on('error', (e) => {
errorCount++
// clearInterval(interval)
pool = null
// console.log('connection error', e)
if (connection.connected || connection.connecting) {
console.log('Connection errored, trying to close connection', errorCount, e)
connection.close((e) => {
console.log(new Date() - startTime)
console.log('connection closed')
if (e) {
errorCount++
// console.log('connection close error', errorCount)
} else {
// if (reconnectTimer) {
// clearTimeout(reconnectTimer)
// }
// reconnectTimer = setTimeout(reconnect, 1500)
}
})
}
})
pool = connection
}).catch((e) => {
errorCount++
console.log('failed to establish connection', errorCount, e)
console.log(e.toString())
// clearInterval(interval)
throw e
})
}
function reconnect () {
console.log('reconnect called')
connect()
}
function getTime () {
console.log('getTime called')
if (!pool) {
console.log('no connection is ready')
return
}
console.log('attempting query')
startTime = new Date()
pool.query('SELECT GETUTCDATE()').then((result) => {
console.log(result)
setTimeout(getTime, 2000)
// console.log('closing')
// pool.close(() => {
// console.log('closed')
// })
}).catch((e) => {
errorCount++
console.log('error performing query', errorCount, e)
// wtf.dump()
// clearInterval(interval)
})
}
let interval
connect().then(() => {
getTime()
// interval = setInterval(getTime, 5000)
}).catch(() => {
})
// setTimeout(poolRequest.close.bind(poolRequest), 15000)