| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _metadataParser = _interopRequireDefault(require("../metadata-parser"));
- var _token = require("./token");
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function readTableName(parser, options, metadata, callback) {
- if (metadata.type.hasTableName) {
- if (options.tdsVersion >= '7_2') {
- parser.readUInt8(numberOfTableNameParts => {
- const tableName = [];
- let i = 0;
- function next(done) {
- if (numberOfTableNameParts === i) {
- return done();
- }
- parser.readUsVarChar(part => {
- tableName.push(part);
- i++;
- next(done);
- });
- }
- next(() => {
- callback(tableName);
- });
- });
- } else {
- parser.readUsVarChar(callback);
- }
- } else {
- callback(undefined);
- }
- }
- function readColumnName(parser, options, index, metadata, callback) {
- parser.readBVarChar(colName => {
- if (options.columnNameReplacer) {
- callback(options.columnNameReplacer(colName, index, metadata));
- } else if (options.camelCaseColumns) {
- callback(colName.replace(/^[A-Z]/, function (s) {
- return s.toLowerCase();
- }));
- } else {
- callback(colName);
- }
- });
- }
- function readColumn(parser, options, index, callback) {
- (0, _metadataParser.default)(parser, options, metadata => {
- readTableName(parser, options, metadata, tableName => {
- readColumnName(parser, options, index, metadata, colName => {
- callback({
- userType: metadata.userType,
- flags: metadata.flags,
- type: metadata.type,
- collation: metadata.collation,
- precision: metadata.precision,
- scale: metadata.scale,
- udtInfo: metadata.udtInfo,
- dataLength: metadata.dataLength,
- schema: metadata.schema,
- colName: colName,
- tableName: tableName
- });
- });
- });
- });
- }
- function colMetadataParser(parser, _colMetadata, options, callback) {
- parser.readUInt16LE(columnCount => {
- const columns = [];
- let i = 0;
- function next(done) {
- if (i === columnCount) {
- return done();
- }
- readColumn(parser, options, i, column => {
- columns.push(column);
- i++;
- next(done);
- });
- }
- next(() => {
- callback(new _token.ColMetadataToken(columns));
- });
- });
- }
- var _default = colMetadataParser;
- exports.default = _default;
- module.exports = colMetadataParser;
|