diff --git a/dbt_subprojects/nft/models/_sector/trades/chains/ronin/nft_ronin_base_trades.sql b/dbt_subprojects/nft/models/_sector/trades/chains/ronin/nft_ronin_base_trades.sql new file mode 100644 index 00000000000..83f699e3415 --- /dev/null +++ b/dbt_subprojects/nft/models/_sector/trades/chains/ronin/nft_ronin_base_trades.sql @@ -0,0 +1,49 @@ +{{ config( + schema = 'nft_ronin', + alias = 'base_trades', + materialized = 'view' + ) +}} +-- (project, project_version, model) +{% set nft_models = [ + ref('mavis_ronin_base_trades') +] %} + +with base_union as ( +SELECT * FROM ( +{% for nft_model in nft_models %} + SELECT + blockchain, + project, + project_version, + block_time, + block_date, + block_month, + block_number, + tx_hash, + project_contract_address, + trade_category, + trade_type, + buyer, + seller, + nft_contract_address, + nft_token_id, + nft_amount, + price_raw, + currency_contract, + platform_fee_amount_raw, + royalty_fee_amount_raw, + platform_fee_address, + royalty_fee_address, + sub_tx_trade_id, + tx_from, + tx_to, + tx_data_marker + FROM {{ nft_model }} + {% if not loop.last %} + UNION ALL + {% endif %} + {% endfor %} + ) +) +select * from base_union diff --git a/dbt_subprojects/nft/models/_sector/trades/chains/ronin/platforms/_schema.yml b/dbt_subprojects/nft/models/_sector/trades/chains/ronin/platforms/_schema.yml new file mode 100644 index 00000000000..9da694d9865 --- /dev/null +++ b/dbt_subprojects/nft/models/_sector/trades/chains/ronin/platforms/_schema.yml @@ -0,0 +1,12 @@ +version: 2 + +models: + - name: mavis_ronin_base_trades + meta: + blockchain: ronin + sector: nft + project: mavis_ronin + contributors: ['peterrliem' ] + config: + tags: [ 'ronin', 'nft', 'trades', 'mavis' ] + description: "mavis marketplace base trades" diff --git a/dbt_subprojects/nft/models/_sector/trades/chains/ronin/platforms/mavis_ronin_base_trades.sql b/dbt_subprojects/nft/models/_sector/trades/chains/ronin/platforms/mavis_ronin_base_trades.sql new file mode 100644 index 00000000000..d7ef5b9c292 --- /dev/null +++ b/dbt_subprojects/nft/models/_sector/trades/chains/ronin/platforms/mavis_ronin_base_trades.sql @@ -0,0 +1,92 @@ +{{ config( + schema = 'mavis_ronin', + alias = 'base_trades', + materialized = 'incremental', + file_format = 'delta', + incremental_strategy = 'merge', + unique_key = ['block_number','tx_hash','sub_tx_trade_id'], + ) +}} + + +with trade_details as ( + +select + evt_block_time as block_time, + evt_block_date as block_date, + evt_block_number as block_number, + evt_tx_hash as tx_hash, + evt_tx_from as tx_from, + evt_tx_to as tx_to, + evt_index, + contract_address, + COALESCE(FROM_HEX(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[5].recipient')),FROM_HEX(json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')), '$.maker'))) as seller, + FROM_HEX(json_extract_scalar("order", '$.recipient')) as buyer, + json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')), '$.kind') as kind, + cast(json_extract_scalar(replace(json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')),'$.assets[0]'),'\\', ''),'$.erc') as double) as erc, + FROM_HEX(json_extract_scalar(replace(json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')),'$.assets[0]'),'\\', ''),'$.addr')) as nft_contract_address, + cast(json_extract_scalar(replace(json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')),'$.assets[0]'),'\\', ''),'$.id') as double) as nft_token_id, + case + when cast(json_extract_scalar(replace(json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')),'$.assets[0]'),'\\', ''),'$.quantity') as double) = 0 then 1 + else cast(json_extract_scalar(replace(json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')),'$.assets[0]'),'\\', ''),'$.quantity') as double) + end as quantity, + FROM_HEX(json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')), '$.paymentToken')) as currency_address, + CAST(json_extract_scalar("order", '$.realPrice') AS DOUBLE) as price_raw, + CAST(json_extract_scalar(json_parse(json_extract_scalar("order", '$.info')), '$.baseUnitPrice') AS DOUBLE) as base_unit_price_raw, + FROM_HEX(json_extract_scalar("order", '$.refunder')) as refunder, + FROM_HEX(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[1].recipient')) as platform_address, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[1].value') AS DOUBLE) as platform_fee_amount_raw, + FROM_HEX(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[2].recipient')) as axie_treasury_address, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[2].ratio') AS DOUBLE) as axie_fee_raw, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[2].value') AS DOUBLE) as axie_fee_amount_raw, + FROM_HEX(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[3].recipient')) as ronin_treasury_address, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[3].ratio') AS DOUBLE) as ronin_fee, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[3].value') AS DOUBLE) as ronin_treasury_fee_amount_raw, + FROM_HEX(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[4].recipient')) as creator_royalty_address, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[4].ratio') AS DOUBLE) as creator_royalty_fee, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[4].value') AS DOUBLE) as creator_royalty_fee_amount_raw, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[5].ratio')AS DOUBLE) AS seller_percentage_fee, + CAST(json_extract_scalar(json_parse(cast(concat('[', array_join(receivedAllocs, ','), ']') as varchar)),'$[5].value')AS DOUBLE) AS seller_amount_raw + FROM + {{ source('mavis_marketplace_ronin','MavisMarketPlace_evt_OrderMatched') }} + {% if is_incremental() %} + WHERE {{incremental_predicate('evt_block_time')}} + {% endif %} + ), + +base_trades as ( + + select + 'ronin' as blockchain, + 'mavis market' as project, + 'v1' as project_version, + block_time, + cast(date_trunc('day', block_time) as date) as block_date, + cast(date_trunc('month', block_time) as date) as block_month, + block_number, + nft_contract_address, + nft_token_id, + quantity as nft_amount, + seller, + buyer, + 'buy' as trade_category, + 'secondary' as trade_type, + price_raw, + currency_address as currency_contract, + contract_address as project_contract_address, + tx_hash, + platform_address as platform_fee_address, + platform_fee_amount_raw, + creator_royalty_address as royalty_fee_address, + creator_royalty_fee_amount_raw as royalty_fee_amount_raw, + axie_fee_amount_raw, + ronin_treasury_fee_amount_raw, + evt_index as sub_tx_trade_id + FROM trade_details + ) + +-- this will be removed once tx_from and tx_to are available in the base event tables +{{ add_nft_tx_data('base_trades', 'ronin') }} + + + diff --git a/dbt_subprojects/nft/models/_sector/trades/nft_base_trades.sql b/dbt_subprojects/nft/models/_sector/trades/nft_base_trades.sql index d9d70881f68..5454934eb2e 100644 --- a/dbt_subprojects/nft/models/_sector/trades/nft_base_trades.sql +++ b/dbt_subprojects/nft/models/_sector/trades/nft_base_trades.sql @@ -27,6 +27,7 @@ ,ref('nft_blast_base_trades') ,ref('nft_fantom_base_trades') ,ref('nft_nova_base_trades') + ,ref('nft_ronin_base_trades') ] %} with base_union as ( diff --git a/dbt_subprojects/nft/models/_sector/trades/nft_trades.sql b/dbt_subprojects/nft/models/_sector/trades/nft_trades.sql index d060f52e9f5..ba3ffe325d1 100644 --- a/dbt_subprojects/nft/models/_sector/trades/nft_trades.sql +++ b/dbt_subprojects/nft/models/_sector/trades/nft_trades.sql @@ -2,7 +2,7 @@ schema = 'nft', alias = 'trades', materialized = 'view', - post_hook='{{ expose_spells(\'["ethereum","solana","bnb","optimism","arbitrum","polygon","zksync", "blast"]\', + post_hook='{{ expose_spells(\'["ethereum","solana","bnb","optimism","arbitrum","polygon","zksync", "blast", "ronin", "nova"]\', "sector", "nft", \'["soispoke","0xRob", "hildobby"]\') }}') diff --git a/sources/_sector/nft/_sources.yml b/sources/_sector/nft/_sources.yml index b0169568859..1e82442e5fc 100644 --- a/sources/_sector/nft/_sources.yml +++ b/sources/_sector/nft/_sources.yml @@ -49,3 +49,6 @@ sources: - name: nft_sei tables: - name: transfers + - name: nft_ronin + tables: + - name: transfers diff --git a/sources/_sector/nft/trades/ronin_sources.yml b/sources/_sector/nft/trades/ronin_sources.yml new file mode 100644 index 00000000000..8624efeec01 --- /dev/null +++ b/sources/_sector/nft/trades/ronin_sources.yml @@ -0,0 +1,7 @@ +version: 2 + +sources: + - name: mavis_marketplace_ronin + tables: + - name: MavisMarketPlace_evt_OrderMatched +