Ryan Albrecht
01/17/2023, 3:37 PMRyan Albrecht
01/17/2023, 3:37 PMfunction scopeAddDetails(qb){
// qb.addSubselect( "bookName", "book.name" );
// qb.addSubselect( "locationName", "location.name" );
// qb.addSubselect( "customerName", "customer.name" );
// qb.addSubselect( "currencyPairCode", "currencyPair.code" );
// qb.addSubselect( "currencyBaseSymbol", "currencyPair.baseCurrency.symbol" );
// qb.addSubselect( "currencyQuoteSymbol", "currencyPair.quoteCurrency.symbol" );
// qb.addSubselect( "currencyBaseId", "currencyPair.baseCurrency.id" );
// qb.addSubselect( "currencyQuoteId", "currencyPair.quoteCurrency.id" );
//adding multiple subselect is quite slow so I manually build the query here
qb.join("book", "trade.bookId", "book.id");
qb.join("location", "trade.locationId", "location.id");
qb.join("customer", "trade.customerId", "customer.id");
qb.join("currency_pair", "trade.currencyPairId", "currency_pair.id");
qb.join("currency as base_currency", "currency_pair.baseCurrencyId", "base_currency.id");
qb.join("currency as quote_currency", "currency_pair.quoteCurrencyId", "quote_currency.id");
qb.selectRaw("book.name as bookName");
qb.selectRaw("location.name as locationName");
qb.selectRaw("customer.name as customerName");
qb.selectRaw("currency_pair.code as currencyPairCode");
qb.selectRaw("base_currency.symbol as currencyBaseSymbol");
qb.selectRaw("quote_currency.symbol as currencyQuoteSymbol");
qb.selectRaw("base_currency.name as currencyBaseName");
qb.selectRaw("quote_currency.name as currencyQuoteName");
qb.selectRaw( "CAST(side AS SIGNED) * -2 + 1 AS sideSign" );
}