first commit

This commit is contained in:
Francois Klieber committed 2021-06-06 20:25:14 +02:00
commit aa7869eb33
386 files changed
+69375

No files matched your search

+73
View File
@@ -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;