UNPKG

epiquery2

Version:

run templated queries from the http's using learnings from 1

44 lines (39 loc) 1.5 kB
events = require 'events' log = require 'simplog' xmla = require 'xmla4js' # Need to emit data, error, end, row endquery, beginRowset class MDXDriver extends events.EventEmitter constructor: (@query, @config) -> execute: () => xmlaRequest = async: true url: @config.url success: (xmla, xmlaRequest, xmlaResponse) => try if(!xmlaResponse) msg = 'no response for MDX query' + @query log.error msg this.emit 'error', msg else obj = xmlaResponse.fetchAsObject() output = obj || {} this.emit 'data', JSON.stringify(output) catch error msg = 'error parsing MDX response: ' + error log.error msg log.error 'MDX response=' + xmlaResponse this.emit 'error', msg error: (xmla, xmlaRequest, error) => msg = 'MDX query failed to execute, exception=' + error.message log.error msg this.emit 'error', msg callback: () => this.emit 'endquery' xmlaRequest.properties = {} xmlaRequest.properties[xmla.Xmla.PROP_CATALOG] = @config.catalog xmlaRequest.properties[xmla.Xmla.PROP_FORMAT] = xmla.Xmla.PROP_FORMAT_MULTIDIMENSIONAL xmlaRequest.properties[xmla.Xmla.PROP_DATASOURCEINFO] = @config.server xmlaRequest.method = xmla.Xmla.METHOD_EXECUTE xmlaRequest.statement = @query new xmla.Xmla().request(xmlaRequest) module.exports.DriverClass = MDXDriver