JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q23795F
  • License MIT

DB Helper for Nodejs: DB2

Package Exports

  • multi-db-tool

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (multi-db-tool) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Module for working with multiple DB2 Database Connections

  • Still in developing state
  • Supports basic functions using Active Record Style for DB2
  • Implemented functions
    • getById(id)
    • get(field, value, caseSensitive)
    • create()
    • remove()
    • update()
    • getLikeALL(field, value, caseSensitive) adds Wildcards around value
    • getLikeRight(field, value, caseSensitive) adds Wildcard on the right side of value
    • getLikeLeft(field, value, caseSensitive) adds Wildcard on the left side of value
    • getAllUp(field) get Data from table sorted by field ascending
    • getAllDown(field) get Data from table sorted by field descending
    • createGetById
  • Functions for standard Queries
    • manualQuery(db, query, [data]) data can be empty, prepared statement is used
    • manualNonQuery(db, query, [data]) data can be empty, prepared statement is used
  • Uses connection pooling of official db2 module
  • caseSensitive is of type boolean

Module is working with prepared statements to prevent sql injection.

How to use:

var multiDB = require('multi-db-tool');
var mutli = new multiDB(require('path to config file ..', 'passphrase for decrypting properties ...')

Note: Decrpyting is not implemented yet, should be set to null

Example for config file:

var config = {

  ip: {
    type: 'DB2',
    database: 'DB2...',
    hostname: '127.0.0.1',
    port: '13337',
    protocol: 'TCPIP',
    uid: 'test',
    pwd: 'pw'
  },
  up:{
    type: 'DB2',
    database: 'DB2...',
    hostname: '192.168.1.1',
    port: '13339',
    protocol: 'TCPIP',
    uid: 'usr',
    pwd: 'pw'
  }
}

module.exports = config;

Example for Model file:

var MultiDB = require('multi-db');

class Benutzer extends MultiDB{

  getProperties(){

    var props = {
      ID_BENUTZER: {
        type: 'bigint',
        required: true,
        key: 'primary',
        sequence: '... sequence name ...'
      },
      BENUTZERNAME: {
        type: 'string',
        required: true,
        size: 255
      },
      EMAIL: {
        type: 'string',
        required: true,
        size: 255
      },
      NAME: {
        type: 'string',
        size: 255
      },
      VORNAME: {
        type: 'string',
        size: 255
      }
    }

    return props;
  }

  getDatabase(){

    return 'ip';
  }

  getTableName(){

    return 'BENUTZER';
  }

  getSchema(){

    return 'TESTSCHEMA';
  }
}

module.exports = Benutzer;

Note: getDatabase has to match with a Database in config file

Using the module with promises

var test = new Benutzer();

test.getById(10).then((data) => {

  console.log(data)
});

Using the module with await

let test = new Benutzer();
let test2 = await test.getById(10)

Note: Can only be used in async functions!

Using tool for standard queries

var multiDB = require('multi-db-tool');
var mutli = new multiDB(require('path to config file ..', null)

multi.manualQuery('ip', 'select * from test.test where test_data = ?', ['test']).then((data) => {

})

let test = await multi.manualQuery('ip', 'select * from test.test where test_data = ?', ['test'])

Using Model generator

var db2Tool = require('./node_modules/multi-db-tool/src/tools/db2ModelGenerator.js')

db2Tool.generateDB2Model(require('... path to db config file'), 'name of db in config file', '..schema', '..table name', '.. sequence name for primary fields', '..path to write file');