UNPKG

nodulator

Version:

Nodulator ============

93 lines (63 loc) 2.46 kB
_ = require 'underscore' mysql = require 'mysql' module.exports = (config) -> connection = mysql.createConnection host : config.dbAuth.host || 'localhost' port : condif.dbAuth.port || 3306 user : config.dbAuth.user || '' password : config.dbAuth.pass || '' database : config.dbAuth.database || '' typeCast: (field, next) -> if field.type is 'TINY' and field.length is 1 return field.string() is '1' return next() connection.on 'error', -> console.error 'MYSQL ERROR' class Mysql constructor: -> Select: (table, fields, where, options, done) -> f = fields if Array.isArray fields f = fields.join(',') query = 'select ' + f + ' from ' + table hasConditions = _(where).size() > 0 if where? if (hasConditions) query += ' where ' + _(where).map(@_MakeSQLCondition).join(' and '); if options? if options.sortBy? query += ' order by ' + options.sortBy if options.reverse query += ' desc' if options.limit? query += ' limit ' + options.limit connection.query query, where, (err, rows) -> return done err if err? done null, rows Insert: (table, fields, done) -> query = 'insert into ' + table + ' set ?' connection.query query, fields, (err, results) -> return done err if err? done null, results.insertId Update: (table, fields, where, done) -> query = 'update ' + table + ' set ? where ' + _(where).map((value, key) -> return mysql.escapeId(key) + ' = ' + mysql.escape(value) ).join(' and ') connection.query query, fields, (err, results) -> return done err if err? done null, results.affectedRows Delete: (table, where, done) -> query = 'delete from ' + table + ' where ' + _(where).map((value, key) -> return mysql.escapeId(key) + ' = ' + mysql.escape(value) ).join(' and ') connection.query query, {}, (err, results) -> return done err if err? done null, results.affectedRows _MakeSQLCondition: (value, key) -> safeKey = mysql.escapeId key # normal case A = B if !_.isObject value return safeKey + ' = ' + mysql.escape value op = if value.sup then ' > ' else ' < ' return safeKey + op + mysql.escape value.val new Mysql module.exports.AddTable = (name) ->