tedious
Version:
A TDS driver, for connecting to MS SQLServer databases.
66 lines (58 loc) • 1.75 kB
JavaScript
// s2.2.7.5/6/7
const STATUS = {
MORE: 0x0001,
ERROR: 0x0002,
// This bit is not yet in use by SQL Server, so is not exposed in the returned token
INXACT: 0x0004,
COUNT: 0x0010,
ATTN: 0x0020,
SRVERROR: 0x0100
};
function parseToken(parser, options, callback) {
parser.readUInt16LE(status => {
const more = !!(status & STATUS.MORE);
const sqlError = !!(status & STATUS.ERROR);
const rowCountValid = !!(status & STATUS.COUNT);
const attention = !!(status & STATUS.ATTN);
const serverError = !!(status & STATUS.SRVERROR);
parser.readUInt16LE(curCmd => {
(options.tdsVersion < '7_2' ? parser.readUInt32LE : parser.readUInt64LE).call(parser, rowCount => {
callback({
name: 'DONE',
event: 'done',
more: more,
sqlError: sqlError,
attention: attention,
serverError: serverError,
rowCount: rowCountValid ? rowCount : undefined,
curCmd: curCmd
});
});
});
});
}
module.exports.doneParser = doneParser;
function doneParser(parser, colMetadata, options, callback) {
parseToken(parser, options, token => {
token.name = 'DONE';
token.event = 'done';
callback(token);
});
}
module.exports.doneInProcParser = doneInProcParser;
function doneInProcParser(parser, colMetadata, options, callback) {
parseToken(parser, options, token => {
token.name = 'DONEINPROC';
token.event = 'doneInProc';
callback(token);
});
}
module.exports.doneProcParser = doneProcParser;
function doneProcParser(parser, colMetadata, options, callback) {
parseToken(parser, options, token => {
token.name = 'DONEPROC';
token.event = 'doneProc';
callback(token);
});
}
;