From 6ee1da0fe16b25e904a4c015a0bb738b06a5561c Mon Sep 17 00:00:00 2001 From: Raman Shekhawat Date: Thu, 10 Oct 2024 18:22:00 +0530 Subject: [PATCH] add metrics for infusion --- src/prom-metrics/definitions/multiToken.ts | 40 +++++++++++++++++++--- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/prom-metrics/definitions/multiToken.ts b/src/prom-metrics/definitions/multiToken.ts index c01032d0..efc49334 100644 --- a/src/prom-metrics/definitions/multiToken.ts +++ b/src/prom-metrics/definitions/multiToken.ts @@ -52,6 +52,27 @@ export const indexer_multitokens_existential_deposit_total = new client.Gauge({ registers: [register], }) +export const indexer_multitokens_enj_infused_total = new client.Gauge({ + name: 'indexer_multitokens_enj_infused_total', + labelNames: ['multitoken'], + help: 'The total ENJ infused in all tokens.', + registers: [register], +}) + +export const indexer_multitokens_infused_tokens_total = new client.Gauge({ + name: 'indexer_multitokens_infused_tokens_total', + labelNames: ['multitoken'], + help: 'The total number of infused tokens. (Tokens with infusion > 0) including, multiplied by their supply', + registers: [register], +}) + +export const indexer_multitokens_infused_unique_tokens_total = new client.Gauge({ + name: 'indexer_multitokens_infused_unique_tokens_total', + labelNames: ['multitoken'], + help: 'The total number of unique infused tokens. (Tokens with infusion > 0), where FTs is considered 1', + registers: [register], +}) + export default async () => { if (!connection.isInitialized) { await connection.initialize().catch(() => { @@ -69,14 +90,22 @@ export default async () => { collectionTokensAvg, accountTokensAvg, existentialDepositTotal, + enjInfusedTotal, + infusedTokensTotal, + infusedUniqueTokensTotal, ] = await Promise.all([ em.query('SELECT COUNT(DISTINCT account_id) FROM token_account where total_balance::numeric > 0'), em.query('SELECT COUNT(*) as count FROM collection'), - em.query('SELECT COUNT(*) FROM token'), - em.query('SELECT AVG(holders) FROM (SELECT COUNT(id) as holders FROM collection_account GROUP BY collection_id)'), - em.query('SELECT AVG(tokens) FROM (SELECT COUNT(id) as tokens FROM token GROUP BY collection_id)'), - em.query('SELECT AVG(tokens) FROM (SELECT COUNT(id) as tokens FROM token_account GROUP BY account_id)'), + em.query('SELECT COUNT(*) as count FROM token'), + em.query( + 'SELECT AVG(sq.holders) as avg FROM (SELECT COUNT(id) as holders FROM collection_account GROUP BY collection_id) as sq' + ), + em.query('SELECT AVG(sq.tokens) as avg FROM (SELECT COUNT(id) as tokens FROM token GROUP BY collection_id) as sq'), + em.query('SELECT AVG(sq.tokens) as avg FROM (SELECT COUNT(id) as tokens FROM token_account GROUP BY account_id) as sq'), em.query('SELECT SUM(unit_price)::numeric / POW(10,18) as sum FROM token'), + em.query('SELECT SUM(infusion)::numeric / POW(10,18) as sum FROM token WHERE infusion::numeric > 0'), + em.query('SELECT SUM(supply::numeric) as sum FROM token WHERE infusion::numeric > 0'), + em.query('SELECT COUNT(*) as count FROM token WHERE infusion::numeric > 0'), ]) indexer_multitokens_unique_holders_total.set(Number(uniqueHolders[0].count)) @@ -86,4 +115,7 @@ export default async () => { indexer_multitokens_collection_tokens_avg.set(parseInt(collectionTokensAvg[0].avg, 10)) indexer_multitokens_account_tokens_avg.set(parseInt(accountTokensAvg[0].avg, 10)) indexer_multitokens_existential_deposit_total.set(Number(existentialDepositTotal[0].sum)) + indexer_multitokens_enj_infused_total.set(Number(enjInfusedTotal[0].sum)) + indexer_multitokens_infused_tokens_total.set(Number(infusedTokensTotal[0].sum)) + indexer_multitokens_infused_unique_tokens_total.set(Number(infusedUniqueTokensTotal[0].count)) }