Skip to content
This repository has been archived by the owner on Jul 17, 2021. It is now read-only.

Commit

Permalink
♻️ Move Query templates files into enum
Browse files Browse the repository at this point in the history
  • Loading branch information
valamidev committed Mar 4, 2020
1 parent 577e9a9 commit 3d52ffd
Show file tree
Hide file tree
Showing 12 changed files with 44 additions and 46 deletions.
4 changes: 2 additions & 2 deletions src/__test__/database/database.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
Expand Down
29 changes: 25 additions & 4 deletions src/database/queries/enums.ts
Original file line number Diff line number Diff line change
@@ -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;`,
}
11 changes: 5 additions & 6 deletions src/database/queries/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
},

Expand Down Expand Up @@ -124,11 +125,9 @@ export const DBQueries = {
}
},

createNewTableFromTemplate: async (templatePath: string, tableName: string): Promise<boolean> => {
createNewTableFromTemplate: async (templateQuery: string, tableName: string): Promise<boolean> => {
try {
const quertTemplate = fs.readFileSync(templatePath, { encoding: 'utf8' });

await ExchangeDB.query(quertTemplate, [tableName]);
await ExchangeDB.query(templateQuery, [tableName]);

return true;
} catch (e) {
Expand Down
9 changes: 0 additions & 9 deletions src/database/templates/candlestick.sql

This file was deleted.

5 changes: 0 additions & 5 deletions src/database/templates/orderbook.sql

This file was deleted.

8 changes: 0 additions & 8 deletions src/database/templates/trades.sql

This file was deleted.

4 changes: 2 additions & 2 deletions src/emitter/events/candlestick_emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -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]];
Expand Down
4 changes: 2 additions & 2 deletions src/emitter/events/orderbook_emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {};
Expand Down Expand Up @@ -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 });
Expand Down
4 changes: 2 additions & 2 deletions src/emitter/events/trades_emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<string> = new Set();

Expand Down Expand Up @@ -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);
}
Expand Down
4 changes: 2 additions & 2 deletions src/redis/channels/candlestick_redis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
})
*/
4 changes: 2 additions & 2 deletions src/tradepairs/candlestick_history.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -41,7 +41,7 @@ class Candlestick {
async start(): Promise<void> {
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}`);
Expand Down
4 changes: 2 additions & 2 deletions src/workers/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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
Expand Down

0 comments on commit 3d52ffd

Please sign in to comment.