Skip to content

xexi/evens

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status  Known Vulnerabilities


Simple handling of sql queries in nodejs code

⇩⇩⇩⇩⇩⇩⇩⇩ simplify ⇩⇩⇩⇩⇩⇩⇩⇩


*Note: * evens takes care of of these things.

You don't need to worry about :

  • Connection management (release or close)
  • Commit
  • Rollback
  • Error handling

#### How to Use ?

sample DB

simple query

"use strict";
let evens = require('evens').mysql;
let t = new evens({ host: '127.0.0.1', user: , password: , .... });

let plan = [ { query: 'SELECT * FROM gym'}]; // add more query by { query: 'blabla' }
t.query(plan);
t.on('end', (r)=>{ console.log(r.esult); });



advanced query

"use strict";
let evens = require('evens').mysqlPool;
const mysql = require('mysql');
const pool = mysql.createPool({
  connectionLimit : 10,
  host     : '127.0.0.1', 
  user     : 'example',
  password : 'your_password',
  port     : 3306,
  database : 'your_db'
});

let plan = [ {
  query: { sql: 'UPDATE gym SET name = ? WHERE id = \'bird\'', timeout : 500000 },
  values: ['gym'],
  cData: { switch : 'off' } // must assign if you're going to use data chainning
}, {
  query: 'SELECT * FROM gym '
}, {
  customData : [ 1 ],
  customQuery : (data) => {
    // just give a number to customData you can retrive all plan[1] query result 
    if(data){
      return { query: 'SELECT * FROM gym '};
    } else {
      return 'pass'; /* must consider customData exception 
                        by 'pass' command you can just skip this query
                        or you can just quit process and end connection by 'end' command */
    }
  }
}, {
  // if query result not matched do not query
  customData : [ { 1: 'name'} ], // you can set static value or query result ( obj,str,arr )
  customQuery : (data, cData) =>{
    if(data[0]==='gym'){
      cData['switch'] = 'on'; // let's get more tricky
      return {
        query: 'SELECT * FROM ' + data[0],
        cData: cData 
      };
    } else {
      return 'pass'; 
    }
  }
}, {
  customQuery : (data, cData)=>{
    if(cData.switch==='on') return {query: 'SELECT * FROM day'}; // you can change program flow by cData   
  }
} ];

let Q = new evens(pool, {queryTimeout: 10000}); // set general query timeout
Q.query(plan);
Q.on('end', (r)=>{
  if(r.success){
    console.log(r.esult);    
  } else {
    console.log(JSON.stringify(r)); // err
  }
});