From 3d52ffd1ca17a5e75c1d7cf6b83710b79e73d0a0 Mon Sep 17 00:00:00 2001 From: T <52665225+valamidev@users.noreply.github.com> Date: Wed, 4 Mar 2020 14:03:21 +0100 Subject: [PATCH] :recycle: Move Query templates files into enum --- src/__test__/database/database.test.ts | 4 ++-- src/database/queries/enums.ts | 29 +++++++++++++++++++---- src/database/queries/index.ts | 11 ++++----- src/database/templates/candlestick.sql | 9 ------- src/database/templates/orderbook.sql | 5 ---- src/database/templates/trades.sql | 8 ------- src/emitter/events/candlestick_emitter.ts | 4 ++-- src/emitter/events/orderbook_emitter.ts | 4 ++-- src/emitter/events/trades_emitter.ts | 4 ++-- src/redis/channels/candlestick_redis.ts | 4 ++-- src/tradepairs/candlestick_history.ts | 4 ++-- src/workers/worker.ts | 4 ++-- 12 files changed, 44 insertions(+), 46 deletions(-) delete mode 100644 src/database/templates/candlestick.sql delete mode 100644 src/database/templates/orderbook.sql delete mode 100644 src/database/templates/trades.sql diff --git a/src/__test__/database/database.test.ts b/src/__test__/database/database.test.ts index ba5521f..79740a8 100644 --- a/src/__test__/database/database.test.ts +++ b/src/__test__/database/database.test.ts @@ -2,11 +2,11 @@ require('dotenv').config(); import { DBQueries } from '../../database/queries/'; -import { TableTemplatePath } from '../../database/queries/enums'; +import { TableTemplates } from '../../database/queries/enums'; describe('Database Queries', () => { it('Should create new table by template', async () => { - await DBQueries.createNewTableFromTemplate(TableTemplatePath.Trades, 'test_table'); + await DBQueries.createNewTableFromTemplate(TableTemplates.Trades, 'test_table'); expect(1).toBe(1); }); diff --git a/src/database/queries/enums.ts b/src/database/queries/enums.ts index 7a0a44d..601013f 100644 --- a/src/database/queries/enums.ts +++ b/src/database/queries/enums.ts @@ -1,5 +1,26 @@ -export enum TableTemplatePath { - Candlestick = 'src/database/templates/candlesctick.sql', - Trades = 'src/database/templates/trades.sql', - Orderbook = 'src/database/templates/orderbook.sql', +export enum TableTemplates { + Candlestick = `CREATE TABLE ?? ( + time bigint(20) NOT NULL DEFAULT '0', + open double NOT NULL DEFAULT '0', + high double NOT NULL DEFAULT '0', + low double NOT NULL DEFAULT '0', + close double NOT NULL DEFAULT '0', + volume double NOT NULL DEFAULT '0', + UNIQUE KEY time (time) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8;`, + + Orderbook = `CREATE TABLE ?? ( + time bigint(20) NOT NULL, + orderbook json DEFAULT NULL, + PRIMARY KEY (time) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;`, + + Trades = `CREATE TABLE ?? ( + time bigint(20) NOT NULL DEFAULT '0', + side varchar(5) DEFAULT NULL, + quantity double DEFAULT NULL, + price double DEFAULT NULL, + tradeId varchar(30) DEFAULT NULL, + UNIQUE KEY time (time,tradeId) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8;`, } diff --git a/src/database/queries/index.ts b/src/database/queries/index.ts index b291ff9..5d47fe3 100644 --- a/src/database/queries/index.ts +++ b/src/database/queries/index.ts @@ -30,8 +30,9 @@ export const DBQueries = { const [rows] = await ExchangeDB.query('SELECT * FROM `' + tableName + '` WHERE time > ? ORDER BY `time` ASC;', [time]); return rows as RowDataPacket[]; - } catch (e) { - logger.error('SQL error', e); + } catch (err) { + logger.verbose('SQL error', err); + return undefined; } }, @@ -124,11 +125,9 @@ export const DBQueries = { } }, - createNewTableFromTemplate: async (templatePath: string, tableName: string): Promise => { + createNewTableFromTemplate: async (templateQuery: string, tableName: string): Promise => { try { - const quertTemplate = fs.readFileSync(templatePath, { encoding: 'utf8' }); - - await ExchangeDB.query(quertTemplate, [tableName]); + await ExchangeDB.query(templateQuery, [tableName]); return true; } catch (e) { diff --git a/src/database/templates/candlestick.sql b/src/database/templates/candlestick.sql deleted file mode 100644 index c7b87a6..0000000 --- a/src/database/templates/candlestick.sql +++ /dev/null @@ -1,9 +0,0 @@ -CREATE TABLE ?? ( - `time` bigint(20) NOT NULL DEFAULT '0', - `open` double NOT NULL DEFAULT '0', - `high` double NOT NULL DEFAULT '0', - `low` double NOT NULL DEFAULT '0', - `close` double NOT NULL DEFAULT '0', - `volume` double NOT NULL DEFAULT '0', - UNIQUE KEY `time` (`time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/src/database/templates/orderbook.sql b/src/database/templates/orderbook.sql deleted file mode 100644 index 590347b..0000000 --- a/src/database/templates/orderbook.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE ?? ( - `time` bigint(20) NOT NULL, - `orderbook` json DEFAULT NULL, - PRIMARY KEY (`time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; \ No newline at end of file diff --git a/src/database/templates/trades.sql b/src/database/templates/trades.sql deleted file mode 100644 index 85e1913..0000000 --- a/src/database/templates/trades.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE TABLE ?? ( - `time` bigint(20) NOT NULL DEFAULT '0', - `side` varchar(5) DEFAULT NULL, - `quantity` double DEFAULT NULL, - `price` double DEFAULT NULL, - `tradeId` varchar(30) DEFAULT NULL, - UNIQUE KEY `time` (`time`,`tradeId`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/src/emitter/events/candlestick_emitter.ts b/src/emitter/events/candlestick_emitter.ts index e9afc3a..42b3359 100644 --- a/src/emitter/events/candlestick_emitter.ts +++ b/src/emitter/events/candlestick_emitter.ts @@ -6,7 +6,7 @@ import { Emitter } from '../emitter'; import { DBQueries } from '../../database/queries'; import { TicksOHLCV } from '../../types/types'; -import { TableTemplatePath } from '../../database/queries/enums'; +import { TableTemplates } from '../../database/queries/enums'; class CandlestickEmitter { constructor() { @@ -40,7 +40,7 @@ class CandlestickEmitter { try { // Check if table exist if (!(await DBQueries.tableCheck(tableName))) { - await DBQueries.createNewTableFromTemplate(TableTemplatePath.Candlestick, tableName); + await DBQueries.createNewTableFromTemplate(TableTemplates.Candlestick, tableName); } const OHLCV: TicksOHLCV[] = [[candle.startTime, candle.open, candle.high, candle.low, candle.close, candle.volume]]; diff --git a/src/emitter/events/orderbook_emitter.ts b/src/emitter/events/orderbook_emitter.ts index 635dce6..3ec136d 100644 --- a/src/emitter/events/orderbook_emitter.ts +++ b/src/emitter/events/orderbook_emitter.ts @@ -9,7 +9,7 @@ import { OrderBookStore } from 'orderbook-synchronizer'; import { TradepairQueries } from '../../tradepairs/tradepairs'; import { DBQueries } from '../../database/queries'; import { Redis, RedisPub } from '../../redis/redis'; -import { TableTemplatePath } from '../../database/queries/enums'; +import { TableTemplates } from '../../database/queries/enums'; const memoryLimit = 512; const Orderbooks = {}; @@ -78,7 +78,7 @@ class OrderbookEmitter { const tableName = util.orderbookName(exchange, ccxtSymbol); if (!(await DBQueries.tableCheck(tableName))) { - await DBQueries.createNewTableFromTemplate(TableTemplatePath.Orderbook, tableName); + await DBQueries.createNewTableFromTemplate(TableTemplates.Orderbook, tableName); } await DBQueries.orderbookReplace(tableName, { time: snapshotTime, orderbook }); diff --git a/src/emitter/events/trades_emitter.ts b/src/emitter/events/trades_emitter.ts index 1f6aa19..473ed5f 100644 --- a/src/emitter/events/trades_emitter.ts +++ b/src/emitter/events/trades_emitter.ts @@ -4,7 +4,7 @@ import { Emitter } from '../emitter'; import { TradepairQueries } from '../../tradepairs/tradepairs'; import { DBQueries } from '../../database/queries'; -import { TableTemplatePath } from '../../database/queries/enums'; +import { TableTemplates } from '../../database/queries/enums'; const tableNameCache: Set = new Set(); @@ -45,7 +45,7 @@ class TradesEmitter { return; } - await DBQueries.createNewTableFromTemplate(TableTemplatePath.Trades, tableName); + await DBQueries.createNewTableFromTemplate(TableTemplates.Trades, tableName); } catch (err) { logger.error('Error', err); } diff --git a/src/redis/channels/candlestick_redis.ts b/src/redis/channels/candlestick_redis.ts index d01a330..9884e51 100644 --- a/src/redis/channels/candlestick_redis.ts +++ b/src/redis/channels/candlestick_redis.ts @@ -17,10 +17,10 @@ const { Redis } = require("../index") Redis.subscribe("CandleUpdate", function(err, count) { - console.log("Redis pub/sub channel subscribed count", count) + }) Redis.on("message", function(channel, message) { - console.log("Receive message %s from channel %s", message, channel) + }) */ diff --git a/src/tradepairs/candlestick_history.ts b/src/tradepairs/candlestick_history.ts index 87399f3..f817010 100644 --- a/src/tradepairs/candlestick_history.ts +++ b/src/tradepairs/candlestick_history.ts @@ -9,7 +9,7 @@ import { util } from '../utils'; import { DBQueries } from '../database/queries'; import { RowDataPacket } from 'mysql2'; import { TicksOHLCV } from '../types/types'; -import { TableTemplatePath } from '../database/queries/enums'; +import { TableTemplates } from '../database/queries/enums'; const ccxtCandleLimit = { binance: 500, @@ -41,7 +41,7 @@ class Candlestick { async start(): Promise { try { if (!(await DBQueries.tableCheck(this.tableName))) { - await DBQueries.createNewTableFromTemplate(TableTemplatePath.Candlestick, this.tableName); + await DBQueries.createNewTableFromTemplate(TableTemplates.Candlestick, this.tableName); } logger.verbose(`Candlestick history build start for: ${this.exchange}-${this.symbol}-${this.intervalString}`); diff --git a/src/workers/worker.ts b/src/workers/worker.ts index 424b1a3..1ce9236 100644 --- a/src/workers/worker.ts +++ b/src/workers/worker.ts @@ -9,7 +9,7 @@ import { TradepairQueries } from '../tradepairs/tradepairs'; import { util } from '../utils'; import { isArray } from 'util'; import { TicksOHLCV } from '../types/types'; -import { TableTemplatePath } from '../database/queries/enums'; +import { TableTemplates } from '../database/queries/enums'; const DEFAULT_CANDLE_INTERVAL = 60; @@ -31,7 +31,7 @@ if (parentPort) { const candlestickTableName = util.candlestickName(exchange, symbol, DEFAULT_CANDLE_INTERVAL); if (!(await DBQueries.tableCheck(candlestickTableName))) { - await DBQueries.createNewTableFromTemplate(TableTemplatePath.Candlestick, candlestickTableName); + await DBQueries.createNewTableFromTemplate(TableTemplates.Candlestick, candlestickTableName); } // Get last Candle time