Skip to content

Commit

Permalink
feat: listtrades grpc command #667
Browse files Browse the repository at this point in the history
  • Loading branch information
ImmanuelSegol committed Jan 19, 2019
1 parent c86a113 commit 2ddc779
Show file tree
Hide file tree
Showing 14 changed files with 986 additions and 128 deletions.
52 changes: 52 additions & 0 deletions docs/api.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions lib/cli/commands/listtrades.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { Arguments } from 'yargs';
import { callback, loadXudClient } from '../command';
import { ListTradesRequest } from '../../proto/xudrpc_pb';

export const command = 'listtrades [all]';

export const describe = 'list all trades';

export const builder = {
existing: {
description: 'should return all trades',
type: 'boolean',
default: false,
},
};

export const handler = (argv: Arguments) => {
const request = new ListTradesRequest();
request.setAll(argv.all);
loadXudClient(argv).listTrades(request, callback(argv));
};
1 change: 1 addition & 0 deletions lib/grpc/GrpcServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class GrpcServer {
listCurrencies: grpcService.listCurrencies,
listPairs: grpcService.listPairs,
listPeers: grpcService.listPeers,
listTrades: grpcService.listTrades,
placeOrder: grpcService.placeOrder,
placeOrderSync: grpcService.placeOrderSync,
removeCurrency: grpcService.removeCurrency,
Expand Down
23 changes: 23 additions & 0 deletions lib/grpc/GrpcService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,29 @@ class GrpcService {
}
}

/**
* See [[Service.listTrades]]
*/
public listTrades: grpc.handleUnaryCall<xudrpc.ListTradesRequest, xudrpc.ListTradesResponse> = async (call, callback) => {
try {
const listTrades = await this.service.listTrades(call.request.toObject());
const response = new xudrpc.ListTradesResponse();
const trades: xudrpc.Trade[] = [];
listTrades.forEach((trade) => {
const grpcTrade = new xudrpc.Trade();
grpcTrade.setQuantity(trade.quantity);
grpcTrade.setRhash(trade.rHash ? trade.rHash : '');
grpcTrade.setMakerorderid(trade.makerOrderId);
grpcTrade.setTakerorderid(trade.takerOrderId ? trade.takerOrderId : '');
trades.push(grpcTrade);
});
response.setTradesList(trades);
callback(null, response);
} catch (err) {
callback(this.getGrpcError(err), null);
}
}

/**
* See [[Service.listPeers]]
*/
Expand Down
13 changes: 13 additions & 0 deletions lib/orderbook/OrderBook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,19 @@ class OrderBook extends EventEmitter {
});
}

/**
* Get all trades or a limit number of trades.
*/
public getTrades = async (limit?: number) => {
if (limit) {
const response = await this.repository.getTradesLimit(limit);
return response;
} else {
const response = await this.repository.getTrades();
return response;
}
}

/**
* Get lists of buy and sell orders of peers.
*/
Expand Down
8 changes: 8 additions & 0 deletions lib/orderbook/OrderBookRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,14 @@ class OrderbookRepository {
public addTrade = (trade: db.TradeFactory) => {
return this.models.Trade.create(trade);
}

public getTrades = (): Bluebird<db.TradeInstance[]> => {
return this.models.Trade.findAll();
}

public getTradesLimit = (limit: number): Bluebird<db.TradeInstance[]> => {
return this.models.Trade.findAll({ limit });
}
}

export default OrderbookRepository;
4 changes: 2 additions & 2 deletions lib/proto/hash_resolver_grpc_pb.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 2ddc779

Please sign in to comment.