downloadOperationsHistoryCSV
Auth: true
params:
params: {
currencyId: {
type: 'string',
optional: true,
},
type: {
type: 'string',
optional: true,
},
from: {
type: 'string',
optional: false,
},
to: {
type: 'string',
optional: false,
},
},
Responce:
A string is returned in Base64 format with the following encoded fields
For trading (columns):
Timestamp - standart date format
Example: Mon May 13 2024 14:24:31 GMT+0000 (Coordinated Universal Time)
Market pair - string with base and quotation currency take from trade
Example: BNB-BTC
Side - Selects one of the values
"buy"
,"sell"
values according to the following rule
ctx.meta.user.id === trade?.buyUserId ? 'buy' : 'sell';
Example: sell
OR buy
Price - take from trade
Example: 0.112
Amount - take from trade
Example: 0.101
Total - take from trade
Example: 0.011312
Fee - The value and accuracy are taken by the following formula
const fee = side === trade?.makerOrderSide
? side === 'buy'
? trade.maker_fee.toFixed(currenciesMap[base_currency])
: trade.maker_fee.toFixed(currenciesMap[quote_currency])
: side === 'buy'
? trade.taker_fee.toFixed(currenciesMap[base_currency])
: trade.taker_fee.toFixed(currenciesMap[quote_currency])
Example: 0.00022624
Role - The value is taken by the following formula
Example: Maker
OR Taker
For Trasactions (columns): in work
Â
Logic:
Steps:
We check whether the specified date from which to take data does not exceed 3 months from today
We check what type of operations is being sought, trading or transactions.
type === 'trading'
ORelse
Depending on the required data, we form requests for trades or for operations to receive them based on a time interval.
Form an array of objects with keys that correspond to the column names and values for them.
Passing an array through a converter from an array of objects to a csv string
We convert the CSV string to base64 and return it to the front end to create a file and send it to the client
The frontend can generate text for a file in this way:
Trading
A query is formed to the Trade table and, based on the data, an array of objects with data in the following form is formed:
currenciesMap
- designed to take currency parameters and not make unnecessary queries to the database
Converting to CSV
To convert to CSV format, there is a function that takes an array of objects of the same type. At the beginning, it forms the name of the columns taking the keys of the object, after which it searches through all objects taking the key values and writing them to a string in the format for csv