cli-admin.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. var mysql = require('mysql');
  2. var async = require('async');
  3. var colors = require('colors');
  4. var argv = require('minimist')(process.argv.slice(2));
  5. var util = require('util');
  6. var fs = require('fs');
  7. var Path = require('path');
  8. var config = require('./config');
  9. if(argv.pwd) {
  10. config.db.password = argv.pwd;
  11. }
  12. config.db.multipleStatements = true;
  13. delete config.db.database;
  14. var conn = mysql.createConnection(config.db);
  15. /*
  16. node ./cli-admin.js --create <name>
  17. */
  18. if(argv.create) {
  19. async.series([
  20. createdb(argv.create),
  21. usedb(argv.create),
  22. initschema(),
  23. ], quit);
  24. }
  25. if(argv.reset) {
  26. async.series([
  27. dropdb(argv.reset),
  28. createdb(argv.reset),
  29. usedb(argv.reset),
  30. initdb(),
  31. ], quit);
  32. }
  33. function quit(err) {
  34. if(err) console.log(err);
  35. conn.end();
  36. }
  37. function errcb(cb) {
  38. return function(err) {
  39. if(err) console.log(err);
  40. cb(err);
  41. }
  42. }
  43. function usedb(db) {
  44. return function(cb) {
  45. conn.query('use `'+db+'`;', errcb(cb))
  46. }
  47. }
  48. function createdb(db) {
  49. return function(cb) {
  50. console.log("creating database " + db);
  51. conn.query('CREATE DATABASE IF NOT EXISTS `'+db+'`;', errcb(cb))
  52. console.log(' done');
  53. }
  54. }
  55. function initschema() {
  56. return function(cb) {
  57. console.log('initializing database...');
  58. var schema = fs.readFileSync('./schema.sql', 'utf-8');
  59. conn.query(schema, errcb(cb));
  60. console.log(' done');
  61. }
  62. }
  63. function dropdb(db) {
  64. return function(cb) {
  65. console.log('dropping database ' + db);
  66. conn.query(
  67. 'DROP DATABASE `'+db+'`; '
  68. , errcb(cb))
  69. console.log(' done');
  70. }
  71. }