function update(run, callback) { var valid = userSchema.validate(run.options); if (valid.error) { setImmediate(function() { callback(new errors.BadRequest(valid.error.message)); }); return; } var user = _.pick(run.options, "email", "theme"); var dbOp = db("users").update(user).where({id: run.options.user.id}); log.debug({ user: user }, "updating user"); dbOp.exec(function(error) { if (error && /unique/i.test(error.message)) { var upError = new errors.Conflict( "That email belongs to another account"); callback(upError); return; } if (error) { callback(error); return; } callback(); }); }
onDb.raw(ddl).exec(function (error, result) { if (alreadyExists(error)) { log.debug('recognized an already exists error code') callback(null, result) return } callback(error, result) })
function runFile (ddlPath, callback) { log.debug({path: ddlPath}, 'running db init DDL file') fs.readFile(ddlPath, 'utf8', function (error, ddl) { if (error) { callback(error) return } var statements = ddl.split(';') async.eachSeries(statements, async.apply(runDdl, db), callback) }) }
function (error, result) { if (error && error.code === '28P01') { log.debug(error, 'Admin authentication to DB failed. ' + 'Continuing with app user assuming DB already exists.') // authentication failed // presume role & database have already been setup // move on to schema callback() return } callback(error, result) }
function runDdl (onDb, ddl, callback) { if (!ddl.trim()) { setImmediate(callback) return } log.debug({ddl: ddl}, 'running db init DDL') onDb.raw(ddl).exec(function (error, result) { if (alreadyExists(error)) { log.debug('recognized an already exists error code') callback(null, result) return } callback(error, result) }) }
run.dbOp.update(set).where(where).exec(function (error, rowCount) { if (error) { log.info({ err: error }, 'error updating an entry') next(error) return } if (rowCount < 1) { log.info( {options: run.options}, 'zero rowCount on entry update (HAX0RZ?)' ) next(new errors.NotFound('No entry with id ' + run.options.id)) return } log.debug(set, 'entries/update') select(where, run, next) })
run.dbOp.andWhere(where).exec(function (error, rowCount) { if (error) { log.info({ err: error }, 'error deleting an entry') next(error) return } if (rowCount < 1) { log.info( {options: run.options}, 'zero rowCount on entry delete (HAX0RZ?)' ) next(new errors.NotFound('No entry with id ' + run.options.id)) return } log.debug(where, 'entries/delete') next() })
function execute (run, next) { log.debug({ sql: run.dbOp.toString() }, 'viewTags') run.dbOp.exec(function (error, rows) { if (error) { log.error({ err: error }, 'error in viewTags query') next(error) return } var set = _.map(rows, function (row) { return row.tags.split(' ') }) set = _.flatten(set) set = _.uniq(set) run.result = set.map(function (tag) { return {text: tag} }) next() }) }
setTimeout(function() { log.debug("server exiting abruptly. Connections did not complete quickly."); process.exit(); }, 10 * 1000);
server.close(function() { log.debug("server connections gracefully closed. Exting."); process.exit(); });
var errors = require("app/errors"); process.on("uncaughtException", errors.onUncaughtException); var config = require("config3"); var validateConfig = require("./validateConfig"); var valid = validateConfig(config); if (valid.error) { console.error(valid.error.details, "Config is invalid. Process will exit."); process.exit(33); } var _ = require("lodash"); var log = require("app/log"); log.debug({ env: process.env.NODE_ENV, db: _.omit(config.db, "password") }, "%s server process starting", config.pack.name); var app = require("app"); var server; function gracefulShutdown() { log.info("server doing graceful shutdown due to kill signal"); if (!server) { process.exit(); } server.close(function() { log.debug("server connections gracefully closed. Exting."); process.exit(); });
function denied(error) { log.debug({ email: options.email }, "user sign-in denied"); callback(error || defaultError); }