all files / node-mysql-dbdeploy/lib/ ensuredb.js

24% Statements 6/25
0% Branches 0/4
0% Functions 0/3
24% Lines 6/25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50                                                                                        
var mysql = require('mysql');
var util = require('util');
var _ = require('underscore');
 
var debug = require('debug')('dbdeploy.ensureDB');
 
module.exports = ensureDB;
 
/**
 * Ensures the database exists if it does not the user/password must have
 * permission to create a database otherwise this will error.
 *
 * @param  {[type]}   dbConfig {
 *     "user": "<username>",
 *     "pass": "<password>",
 *     "host": "<hostname>",
 *     "port": <port>,
 *     "database": "<database>"
 *   }
 * @param  {Function} next     std nodejs callback with just err
 */
function ensureDB(dbConfig, next) {
  debug('dbConfig: ', dbConfig);
  var databaseConfig = _.clone(dbConfig);
  var dbName = databaseConfig.database;
  util.log(util.format("[ensuredb-%s] starting...", dbName));
 
  delete databaseConfig.database;
 
  var db = mysql.createConnection(databaseConfig);
  db.connect(function onDbConnect(err) {
    if (err) {
      util.log(util.format('[ensuredb-%s] could not connect: ', dbName, err));
      console.trace();
      return next(err);
    }
    util.log(util.format("[ensuredb-%s] Connected.", dbName));
  });
 
  db.query("CREATE DATABASE IF NOT EXISTS "+dbName, function ensureDBQuery(err) {
    if (err) {
      util.log(util.format('[ensuredb-%s] could not create: ', dbName, err));
      console.trace();
      return next(err);
    }
    util.log(util.format("[ensuredb-%s] database ensured.", dbName));
    return next();
  });
}