First/last trade

This commit is contained in:
Kevin Cotugno 2017-09-08 07:35:47 -07:00
parent 67a5d3abc0
commit eb0c79942c

View File

@ -17,6 +17,10 @@ const (
trades_in_date_range = `SELECT id, trade_id, product, price, size, buy, ` + trades_in_date_range = `SELECT id, trade_id, product, price, size, buy, ` +
`sell, timestamp FROM trades WHERE product = $1 AND timestamp >= $2 ` + `sell, timestamp FROM trades WHERE product = $1 AND timestamp >= $2 ` +
`AND timestamp < $3;` `AND timestamp < $3;`
trade_first = `SELECT id, trade_id, product, price, size, buy, sell, timestamp ` +
`FROM trades WHERE product = $1 ORDER BY trade_id ASC LIMIT 1;`
trade_last = `SELECT id, trade_id, product, price, size, buy, sell, timestamp ` +
`FROM trades WHERE product = $1 ORDER BY trade_id DESC LIMIT 1;`
) )
type TradeService struct { type TradeService struct {
@ -94,3 +98,29 @@ func (t *TradeService) TradesInDateRange(product string, start,
return trades, nil return trades, nil
} }
func (t *TradeService) FirstTrade(product string) (*tacitus.Trade, error) {
var tr tacitus.Trade
row := t.client.db.QueryRow(trade_first, product)
if err := row.Scan(&tr.Id, &tr.TradeId, &tr.Product, &tr.Price, &tr.Size, &tr.Buy,
&tr.Sell, &tr.Timestamp); err != nil {
return nil, err
}
return &tr, nil
}
func (t *TradeService) LastTrade(product string) (*tacitus.Trade, error) {
var tr tacitus.Trade
row := t.client.db.QueryRow(trade_last, product)
if err := row.Scan(&tr.Id, &tr.TradeId, &tr.Product, &tr.Price, &tr.Size, &tr.Buy,
&tr.Sell, &tr.Timestamp); err != nil {
return nil, err
}
return &tr, nil
}