db.js 1.64 KB
"use strict";

var oracledb = require('oracledb');

var config;
var oraCon;

function init(options) {
    if (!options.config) {
        console.trace('Undefined options.config');
        process.exit(1);
    }
    config = options.config;

    connectToOracle();
}

function connectToOracle(callback) {
    oracledb.getConnection(config.oracle, function(err, connection) {
        if (err) {
            console.trace('Can not connect to oracle db: ' + err);
            process.exit(1);
        }

        oraCon = connection;
        console.log("Oracle db connected")

        if (callback) {
            callback(null, oraCon);
        }
    });
}

function connection() {
    return oraCon;
}

function createResultObject(res) {

    let metadata = res.metaData;
    let metadataCount = metadata.length;

    let retval = [];
    let resultCount = res.rows.length;

    for (let i=0; i < resultCount; i++) {

        let row = res.rows[i];
        let data = {};

        for (let j=0; j<metadataCount; j++) {
            let colName = metadata[j].name;
            data[colName] = row[j];
        }

        retval.push(data);

    }

    return retval;
}

function composeQueryWithFilter(query, filter) {
    let newQuery = query;
    let values = [];

    if (!filter) {
        return {query: newQuery, values: values};
    }

    let i;
    for (let key in filter) {
        newQuery += " AND " + key + " = :A" + i++;
        values.push(filter[key]);
    }
    return {query: newQuery, values: values};
}


exports.init = init;
exports.connection = connection;
exports.composeQueryWithFilter = composeQueryWithFilter;
exports.createResultObject = createResultObject;