CKarper/tedious-newrelic

View on GitHub
index.js

Summary

Maintainability
A
0 mins
Test Coverage
const newrelic = require('newrelic');

const MSSQL = 'MSSQL';

function tediousRequestQuery(shim, func, name, args) {
    const request = args[0];
    if (request.parametersByName && request.parametersByName.statement) {
        return request.parametersByName.statement.value;
    }
    return request.sqlTextOrProcedure;
}

function tediousRequestCallback(shim, opFunc, opName, segment, args) {
    const request = args[0];
    request.callback = shim.bindSegment(request.callback, segment);
}

function instrumentTedious(shim, tedious, _moduleName) {
    shim.setDatastore(MSSQL);

    const proto = tedious && tedious.Connection && tedious.Connection.prototype;
    if (proto) {
        shim.recordQuery(proto, 'makeRequest', {
            query: tediousRequestQuery,
            callback: tediousRequestCallback
        });

        shim.recordOperation(proto, ['beginTransaction', 'commitTransaction'], {
            callback: shim.FIRST
        });
    }
}

newrelic.instrumentDatastore('tedious', instrumentTedious);