Loading lib/document_handler.js +0 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ DocumentHandler.prototype.handlePost = function (request, response) { // What to do when done var onSuccess = function () { // Check length console.log(buffer); if (_this.maxLength && buffer.length > _this.maxLength) { cancelled = true; winston.warn('document >maxLength', { maxLength: _this.maxLength }); Loading lib/document_stores/postgres.js +63 −57 Original line number Diff line number Diff line Loading @@ -3,28 +3,27 @@ var postgres = require('pg'); var winston = require('winston'); (function () { 'use strict'; // create table entries (id SERIAL primary key, key varchar(255) not null, value text not null, expiration int); // CREATE UNIQUE INDEX unique_key ON entries (key); // A postgres document store var PostgresDocumentStore = function (options) { this.expireJS = options.expire * 1000; this.connectionString = process.env.DATABASE_URL; this.expireJS = options.expire; this.connectionUrl = process.env.DATABASE_URL || options.connectionUrl; }; PostgresDocumentStore.prototype = { // Set a given key set: function (key, data, callback, skipExpire) { var now = new Date().getTime() / 1000; var now = Math.floor(new Date().getTime() / 1000); var that = this; this.safeConnect(function (err, client, done) { if (err) { return callback(false); } client.query('INSERT INTO entries (key, value, expiration) VALUES ($1, $2, $3)', [ key, data, that.expireJS && !skipExpire ? now + that.expireJS : null that.expireJS && !skipExpire ? that.expireJS + now : null ], function (err, result) { if (err) { winston.error('error persisting value to postgres', { error: err }); Loading @@ -38,26 +37,35 @@ var winston = require('winston'); // Get a given key's data get: function (key, callback, skipExpire) { var now = new Date().getTime() / 1000; var now = Math.floor(new Date().getTime() / 1000); var that = this; this.safeConnect(function (err, client, done) { if (err) { return callback(false); } client.query('SELECT value from entries where KEY = $1 AND (expiration IS NULL or expiration < $2)', [ key, that.expireJS ? now - that.expireJS : 0 ], function (err, result) { client.query('SELECT id,value,expiration from entries where KEY = $1 and (expiration IS NULL or expiration > $2)', [key, now], function (err, result) { if (err) { winston.error('error retrieving value from postgres', { error: err }); return callback(false); } callback(result.rows.length ? result.rows[0].value : false); if (result.rows.length && that.expireJS && !skipExpire) { client.query('UPDATE entries SET expiration = $1 WHERE ID = $2', [ that.expireJS + now, result.rows[0].id ], function (err, result) { if (!err) { done(); } }); } else { done(); } }); }); }, // A connection wrapper safeConnect: function (callback) { postgres.connect(this.connectionString, function (err, client, done) { postgres.connect(this.connectionUrl, function (err, client, done) { if (err) { winston.error('error connecting to postgres', { error: err }); callback(err); Loading @@ -69,6 +77,4 @@ var winston = require('winston'); }; module.export = PostgresDocumentStore; }()); module.exports = PostgresDocumentStore; server.js +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ if (!config.storage.type) { var Store, preferredStore; if (process.env.REDISTOGO_URL) { if (process.env.REDISTOGO_URL && config.storage.type === 'redis') { var redisClient = require('redis-url').connect(process.env.REDISTOGO_URL); Store = require('./lib/document_stores/redis'); preferredStore = new Store(config.storage, redisClient); Loading Loading
lib/document_handler.js +0 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ DocumentHandler.prototype.handlePost = function (request, response) { // What to do when done var onSuccess = function () { // Check length console.log(buffer); if (_this.maxLength && buffer.length > _this.maxLength) { cancelled = true; winston.warn('document >maxLength', { maxLength: _this.maxLength }); Loading
lib/document_stores/postgres.js +63 −57 Original line number Diff line number Diff line Loading @@ -3,28 +3,27 @@ var postgres = require('pg'); var winston = require('winston'); (function () { 'use strict'; // create table entries (id SERIAL primary key, key varchar(255) not null, value text not null, expiration int); // CREATE UNIQUE INDEX unique_key ON entries (key); // A postgres document store var PostgresDocumentStore = function (options) { this.expireJS = options.expire * 1000; this.connectionString = process.env.DATABASE_URL; this.expireJS = options.expire; this.connectionUrl = process.env.DATABASE_URL || options.connectionUrl; }; PostgresDocumentStore.prototype = { // Set a given key set: function (key, data, callback, skipExpire) { var now = new Date().getTime() / 1000; var now = Math.floor(new Date().getTime() / 1000); var that = this; this.safeConnect(function (err, client, done) { if (err) { return callback(false); } client.query('INSERT INTO entries (key, value, expiration) VALUES ($1, $2, $3)', [ key, data, that.expireJS && !skipExpire ? now + that.expireJS : null that.expireJS && !skipExpire ? that.expireJS + now : null ], function (err, result) { if (err) { winston.error('error persisting value to postgres', { error: err }); Loading @@ -38,26 +37,35 @@ var winston = require('winston'); // Get a given key's data get: function (key, callback, skipExpire) { var now = new Date().getTime() / 1000; var now = Math.floor(new Date().getTime() / 1000); var that = this; this.safeConnect(function (err, client, done) { if (err) { return callback(false); } client.query('SELECT value from entries where KEY = $1 AND (expiration IS NULL or expiration < $2)', [ key, that.expireJS ? now - that.expireJS : 0 ], function (err, result) { client.query('SELECT id,value,expiration from entries where KEY = $1 and (expiration IS NULL or expiration > $2)', [key, now], function (err, result) { if (err) { winston.error('error retrieving value from postgres', { error: err }); return callback(false); } callback(result.rows.length ? result.rows[0].value : false); if (result.rows.length && that.expireJS && !skipExpire) { client.query('UPDATE entries SET expiration = $1 WHERE ID = $2', [ that.expireJS + now, result.rows[0].id ], function (err, result) { if (!err) { done(); } }); } else { done(); } }); }); }, // A connection wrapper safeConnect: function (callback) { postgres.connect(this.connectionString, function (err, client, done) { postgres.connect(this.connectionUrl, function (err, client, done) { if (err) { winston.error('error connecting to postgres', { error: err }); callback(err); Loading @@ -69,6 +77,4 @@ var winston = require('winston'); }; module.export = PostgresDocumentStore; }()); module.exports = PostgresDocumentStore;
server.js +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ if (!config.storage.type) { var Store, preferredStore; if (process.env.REDISTOGO_URL) { if (process.env.REDISTOGO_URL && config.storage.type === 'redis') { var redisClient = require('redis-url').connect(process.env.REDISTOGO_URL); Store = require('./lib/document_stores/redis'); preferredStore = new Store(config.storage, redisClient); Loading