Skip to content

Commit b32a09c

Browse files
committed
add token metadata & time/block filters
1 parent bdb936f commit b32a09c

File tree

2 files changed

+42
-12
lines changed

2 files changed

+42
-12
lines changed

src/sql/transfers/tvm.sql

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ arrayFilter(x -> x != '', {contract:Array(String)}) AS contracts,
1010
(length(to_addresses) > 0) AS has_to,
1111
(length(contracts) > 0) AS has_contract,
1212
has_contract AND (NOT has_from) AND (NOT has_to) AS has_only_contract,
13+
toRelativeMinuteNum(toDateTime({start_time:UInt64})) AS start_minute,
14+
toRelativeMinuteNum(toDateTime({end_time:UInt64})) AS end_minute,
15+
{start_time:UInt64} = 1420070400 AS no_start_time,
16+
{end_time:UInt64} = 2524608000 AS no_end_time,
17+
{start_block:UInt64} = 0 AS no_start_block,
18+
{end_block:UInt64} = 9999999999 AS no_end_block,
1319

1420
tx_hash_timestamps AS (
1521
SELECT (minute, timestamp)
@@ -35,8 +41,8 @@ contract_minutes AS (
3541
SELECT minute
3642
FROM trc20_transfer
3743
WHERE has_only_contract
38-
AND ({start_time:UInt64} = 1420070400 OR timestamp >= toRelativeMinuteNum(toDateTime({start_time:UInt64})))
39-
AND ({end_time:UInt64} = 2524608000 OR timestamp <= toRelativeMinuteNum(toDateTime({end_time:UInt64})))
44+
AND (no_start_time OR minute >= start_minute)
45+
AND (no_end_time OR minute <= end_minute)
4046
AND log_address IN {contract:Array(String)}
4147
GROUP BY minute
4248
ORDER BY minute DESC
@@ -46,11 +52,9 @@ transfers AS (
4652
SELECT *
4753
FROM trc20_transfer
4854
WHERE
49-
/* filter by timestamp and block_num early to reduce data scanned */
50-
({start_time:UInt64} = 1420070400 OR timestamp >= toDateTime({start_time:UInt64}))
51-
AND ({end_time:UInt64} = 2524608000 OR timestamp <= toDateTime({end_time:UInt64}))
52-
AND ({start_block:UInt64} = 0 OR block_num >= {start_block:UInt64})
53-
AND ({end_block:UInt64} = 9999999999 OR block_num <= {end_block:UInt64})
55+
/* direct minutes */
56+
(no_start_time OR minute >= start_minute)
57+
AND (no_end_time OR minute <= end_minute)
5458

5559
/* transaction ID filter */
5660
AND ( NOT has_tx_hash OR (minute, timestamp) IN tx_hash_timestamps AND tx_hash IN {transaction_id:Array(String)} )
@@ -65,6 +69,12 @@ transfers AS (
6569
AND ( NOT has_to OR `to` IN {to_address:Array(String)} )
6670
AND ( NOT has_contract OR log_address IN {contract:Array(String)} )
6771

72+
/* timestamp and block_num filters */
73+
AND (no_start_block OR block_num >= {start_block:UInt64})
74+
AND (no_end_block OR block_num <= {end_block:UInt64})
75+
AND (no_start_time OR timestamp >= toDateTime({start_time:UInt64}))
76+
AND (no_end_time OR timestamp <= toDateTime({end_time:UInt64}))
77+
6878
ORDER BY minute DESC, timestamp DESC, block_num DESC, tx_index DESC, log_index DESC
6979
LIMIT {limit:UInt64}
7080
OFFSET {offset:UInt64}
@@ -102,7 +112,14 @@ SELECT
102112
`to`,
103113
toString(t.amount) AS amount,
104114

115+
/* token metadata */
116+
t.amount / pow(10, decimals) AS value,
117+
name,
118+
symbol,
119+
decimals,
120+
105121
/* network */
106122
{network:String} AS network
107123
FROM transfers AS t
124+
LEFT JOIN metadata m ON t.log_address = m.contract
108125
ORDER BY minute DESC, timestamp DESC, block_num DESC, tx_index DESC, log_index DESC;

src/sql/transfers_native/tvm.sql

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ arrayFilter(x -> x != '', {to_address:Array(String)}) AS to_addresses,
88
(length(from_addresses) > 0) AS has_from,
99
(length(to_addresses) > 0) AS has_to,
1010

11+
toRelativeMinuteNum(toDateTime({start_time:UInt64})) AS start_minute,
12+
toRelativeMinuteNum(toDateTime({end_time:UInt64})) AS end_minute,
13+
{start_time:UInt64} = 1420070400 AS no_start_time,
14+
{end_time:UInt64} = 2524608000 AS no_end_time,
15+
{start_block:UInt64} = 0 AS no_start_block,
16+
{end_block:UInt64} = 9999999999 AS no_end_block,
17+
18+
1119
tx_hash_timestamps AS (
1220
SELECT (minute, timestamp)
1321
FROM native_transfer
@@ -52,11 +60,9 @@ SELECT
5260
{network:String} AS network
5361
FROM native_transfer AS t
5462
WHERE
55-
/* filter by timestamp and block_num early to reduce data scanned */
56-
({start_time:UInt64} = 1420070400 OR timestamp >= toDateTime({start_time:UInt64}))
57-
AND ({end_time:UInt64} = 2524608000 OR timestamp <= toDateTime({end_time:UInt64}))
58-
AND ({start_block:UInt64} = 0 OR block_num >= {start_block:UInt64})
59-
AND ({end_block:UInt64} = 9999999999 OR block_num <= {end_block:UInt64})
63+
/* direct minutes */
64+
(no_start_time OR minute >= start_minute)
65+
AND (no_end_time OR minute <= end_minute)
6066

6167
/* transaction ID filter */
6268
AND ( NOT has_tx_hash OR (minute, timestamp) IN tx_hash_timestamps AND tx_hash IN {transaction_id:Array(String)} )
@@ -68,6 +74,13 @@ WHERE
6874
/* direct filters */
6975
AND (NOT has_from OR `from` IN {from_address:Array(String)})
7076
AND (NOT has_to OR `to` IN {to_address:Array(String)})
77+
78+
/* timestamp and block_num filters */
79+
AND (no_start_block OR block_num >= {start_block:UInt64})
80+
AND (no_end_block OR block_num <= {end_block:UInt64})
81+
AND (no_start_time OR timestamp >= toDateTime({start_time:UInt64}))
82+
AND (no_end_time OR timestamp <= toDateTime({end_time:UInt64}))
83+
7184
ORDER BY minute DESC, timestamp DESC, block_num DESC, tx_index DESC
7285
LIMIT {limit:UInt64}
7386
OFFSET {offset:UInt64}

0 commit comments

Comments
 (0)