first commit
This commit is contained in:
commit
aa7869eb33
386 files changed
+69375
No files matched your search
Executable
+73
@@ -0,0 +1,73 @@
|
||||
var _ = require('lodash');
|
||||
const log = require('../../core/log');
|
||||
const util = require('../../core/util');
|
||||
const config = util.getConfig();
|
||||
|
||||
var handle = require('./handle');
|
||||
var postgresUtil = require('./util');
|
||||
|
||||
var Store = function(done, pluginMeta) {
|
||||
_.bindAll(this);
|
||||
this.done = done;
|
||||
this.db = handle;
|
||||
this.cache = [];
|
||||
done();
|
||||
}
|
||||
|
||||
Store.prototype.writeCandles = function() {
|
||||
if(_.isEmpty(this.cache)){
|
||||
return;
|
||||
}
|
||||
|
||||
//log.debug('Writing candles to DB!');
|
||||
_.each(this.cache, candle => {
|
||||
var stmt = `
|
||||
BEGIN;
|
||||
LOCK TABLE ${postgresUtil.table('candles')} IN SHARE ROW EXCLUSIVE MODE;
|
||||
INSERT INTO ${postgresUtil.table('candles')}
|
||||
(start, open, high,low, close, vwp, volume, trades)
|
||||
VALUES
|
||||
(${candle.start.unix()}, ${candle.open}, ${candle.high}, ${candle.low}, ${candle.close}, ${candle.vwp}, ${candle.volume}, ${candle.trades})
|
||||
ON CONFLICT ON CONSTRAINT ${postgresUtil.startconstraint('candles')}
|
||||
DO NOTHING;
|
||||
COMMIT;
|
||||
`;
|
||||
|
||||
this.db.connect((err,client,done) => {
|
||||
if(err) {
|
||||
util.die(err);
|
||||
}
|
||||
client.query(stmt, (err, res) => {
|
||||
done();
|
||||
if (err) {
|
||||
log.debug(err.stack)
|
||||
} else {
|
||||
//log.debug(res)
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
this.cache = [];
|
||||
}
|
||||
|
||||
var processCandle = function(candle, done) {
|
||||
this.cache.push(candle);
|
||||
if (this.cache.length > 1)
|
||||
this.writeCandles();
|
||||
|
||||
done();
|
||||
};
|
||||
|
||||
var finalize = function(done) {
|
||||
this.writeCandles();
|
||||
this.db = null;
|
||||
done();
|
||||
}
|
||||
|
||||
if(config.candleWriter.enabled) {
|
||||
Store.prototype.processCandle = processCandle;
|
||||
Store.prototype.finalize = finalize;
|
||||
}
|
||||
|
||||
module.exports = Store;
|
||||
Reference in new issue
Block a user