Skip to content

Commit

Permalink
Merge pull request #27 from dezswap/feat/total-value
Browse files Browse the repository at this point in the history
Add `total_value` to Transactions
  • Loading branch information
jbamlee authored Dec 13, 2023
2 parents f697edd + 9099f81 commit bbb153e
Showing 1 changed file with 29 additions and 5 deletions.
34 changes: 29 additions & 5 deletions api/service/dashboard/dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -1071,13 +1071,25 @@ func (d *dashboard) Txs(txType TxType, addr ...Addr) (Txs, error) {
pt.asset1 AS asset1,
t1.symbol AS asset1_symbol,
pt.asset1_amount AS asset1_amount,
0 as total_value,
COALESCE(
ABS(CASE WHEN pt.type = 'swap' OR pt.type = 'transfer' THEN
CASE WHEN pr0.price IS NOT NULL
THEN pr0.price * pt.asset0_amount / POWER(10, t0.decimals - t1.decimals)
ELSE pr1.price * pt.asset1_amount / POWER(10, t1.decimals - t0.decimals)
END
ELSE
CASE WHEN pr0.price IS NOT NULL
THEN pr0.price * pt.asset0_amount * 2 / POWER(10, t0.decimals - t1.decimals)
ELSE pr1.price * pt.asset1_amount * 2 / POWER(10, t1.decimals - t0.decimals)
END
END), 0)::text AS total_value,
TO_TIMESTAMP(pt."timestamp") AT TIME ZONE 'UTC' as timestamp`,
).Table("(?) as pt", subQuery).Joins(`
JOIN tokens AS t0 ON pt.asset0 = t0.address AND pt.chain_id = t0.chain_id
JOIN tokens AS t1 ON pt.asset1 = t1.address AND pt.chain_id = t1.chain_id
`,
// TODO(join and find price for total_value when it is ready)
LEFT JOIN LATERAL (SELECT * FROM price WHERE token_id = t0.id AND tx_id <= pt.id ORDER BY tx_id DESC LIMIT 1) pr0 ON TRUE
LEFT JOIN LATERAL (SELECT * FROM price WHERE token_id = t1.id AND tx_id <= pt.id ORDER BY tx_id DESC LIMIT 1) pr1 ON TRUE
`,
).Order(`pt. "timestamp" DESC`)

txs := Txs{}
Expand Down Expand Up @@ -1110,13 +1122,25 @@ func (d *dashboard) TxsOfToken(txType TxType, addr Addr) (Txs, error) {
pt.asset1 AS asset1,
t1.symbol AS asset1_symbol,
pt.asset1_amount AS asset1_amount,
0 as total_value,
COALESCE(
ABS(CASE WHEN pt.type = 'swap' OR pt.type = 'transfer' THEN
CASE WHEN pr0.price IS NOT NULL
THEN pr0.price * pt.asset0_amount / POWER(10, t0.decimals - t1.decimals)
ELSE pr1.price * pt.asset1_amount / POWER(10, t1.decimals - t0.decimals)
END
ELSE
CASE WHEN pr0.price IS NOT NULL
THEN pr0.price * pt.asset0_amount * 2 / POWER(10, t0.decimals - t1.decimals)
ELSE pr1.price * pt.asset1_amount * 2 / POWER(10, t1.decimals - t0.decimals)
END
END), 0)::text AS total_value,
TO_TIMESTAMP(pt."timestamp") AT TIME ZONE 'UTC' as timestamp`,
).Table("(?) as pt", subQuery).Joins(`
JOIN tokens AS t0 ON pt.asset0 = t0.address AND pt.chain_id = t0.chain_id
JOIN tokens AS t1 ON pt.asset1 = t1.address AND pt.chain_id = t1.chain_id
LEFT JOIN LATERAL (SELECT * FROM price WHERE token_id = t1.id AND tx_id <= pt.id ORDER BY tx_id DESC LIMIT 1) pr1 ON TRUE
LEFT JOIN LATERAL (SELECT * FROM price WHERE token_id = t0.id AND tx_id <= pt.id ORDER BY tx_id DESC LIMIT 1) pr0 ON TRUE
`,
// TODO(join and find price for total_value when it is ready)
).Order(`pt. "timestamp" DESC`)

txs := Txs{}
Expand Down

0 comments on commit bbb153e

Please sign in to comment.