bluebot
Version:
A bitcoin trading bot for auto trading at various exchanges
64 lines (49 loc) • 1.44 kB
JavaScript
const _ = require('lodash');
const async = require('async');
const fs = require('fs');
const util = require('../../core/util.js');
const config = util.getConfig();
const dirs = util.dirs();
const sqlite3 = require('sqlite3');
// todo: rewrite with generators or async/await..
module.exports = done => {
const dbDirectory = dirs.bluebot + config.sqlite.dataDirectory
if(!fs.existsSync(dbDirectory))
return done(null, []);
const files = fs.readdirSync(dbDirectory);
const dbs = files
.filter(f => {
let parts = f.split('.');
if(_.last(parts) === 'db')
return true;
})
if(!_.size(dbs))
return done(null, []);
let markets = [];
async.each(dbs, (db, next) => {
const exchange = _.first(db.split('_'));
const handle = new sqlite3.Database(dbDirectory + '/' + db, err => {
if(err)
return next(err);
handle.all(`SELECT name FROM sqlite_master WHERE type='table'`, (err, tables) => {
if(err)
return next(err);
_.each(tables, table => {
let parts = table.name.split('_');
let first = parts.shift();
if(first === 'candles')
markets.push({
exchange: exchange,
currency: _.first(parts),
asset: _.last(parts)
});
});
next();
});
});
},
// got all tables!
err => {
done(err, markets);
});
}