From 0c974b4e2e0c740a71d9a8ce5108c1251418404e Mon Sep 17 00:00:00 2001 From: Henrystats <65398020+henrystats@users.noreply.github.com> Date: Fri, 22 Mar 2024 21:59:50 +0100 Subject: [PATCH 1/2] Add campfire avalanche nft trades --- .../nft_avalanche_c_base_trades.sql | 50 ++++++++++++++++++ .../chains/avalanche_c/platforms/_schema.yml | 28 ++++++++++ .../campfire_avalanche_c_base_trades.sql | 51 +++++++++++++++++++ models/_sector/nft/trades/nft_base_trades.sql | 1 + seeds/_sector/nft/_schema.yml | 10 ++++ .../campfire_avalanche_c_base_trades_seed.csv | 3 ++ .../nft/trades/avalanche_c_sources.yml | 6 +++ 7 files changed, 149 insertions(+) create mode 100644 models/_sector/nft/trades/chains/avalanche_c/nft_avalanche_c_base_trades.sql create mode 100644 models/_sector/nft/trades/chains/avalanche_c/platforms/_schema.yml create mode 100644 models/_sector/nft/trades/chains/avalanche_c/platforms/campfire_avalanche_c_base_trades.sql create mode 100644 seeds/_sector/nft/campfire_avalanche_c_base_trades_seed.csv create mode 100644 sources/_sector/nft/trades/avalanche_c_sources.yml diff --git a/models/_sector/nft/trades/chains/avalanche_c/nft_avalanche_c_base_trades.sql b/models/_sector/nft/trades/chains/avalanche_c/nft_avalanche_c_base_trades.sql new file mode 100644 index 00000000000..63497ce5a83 --- /dev/null +++ b/models/_sector/nft/trades/chains/avalanche_c/nft_avalanche_c_base_trades.sql @@ -0,0 +1,50 @@ +{{ config( + schema = 'nft_avalanche_c', + alias = 'base_trades', + materialized = 'view' + ) +}} + + +{% set nft_models = [ + ref('campfire_avalanche_c_base_trades') +] %} + + +SELECT * FROM ( +{% for nft_model in nft_models %} + SELECT + blockchain, + project, + project_version, + cast(date_trunc('day', block_time) as date) as block_date, + cast(date_trunc('month', block_time) as date) as block_month, + block_time, + block_number, + tx_hash, + project_contract_address, + trade_category, --buy/sell/swap + trade_type, --primary/secondary + buyer, + seller, + nft_contract_address, + nft_token_id, + nft_amount, -- always 1 for erc721 + price_raw, + currency_contract, + platform_fee_amount_raw, + royalty_fee_amount_raw, + platform_fee_address, -- optional + royalty_fee_address, -- optional + sub_tx_trade_id, + tx_from, + tx_to, + tx_data_marker, + row_number() over (partition by tx_hash, sub_tx_trade_id order by tx_hash) as duplicates_rank -- duplicates protection + FROM {{ nft_model }} + {% if not loop.last %} + UNION ALL + {% endif %} + {% endfor %} + ) +where duplicates_rank = 1 diff --git a/models/_sector/nft/trades/chains/avalanche_c/platforms/_schema.yml b/models/_sector/nft/trades/chains/avalanche_c/platforms/_schema.yml new file mode 100644 index 00000000000..ec658f91693 --- /dev/null +++ b/models/_sector/nft/trades/chains/avalanche_c/platforms/_schema.yml @@ -0,0 +1,28 @@ +version: 2 + +models: + - name: campfire_avalanche_c_base_trades + meta: + blockchain: avalanche_c + sector: nft + project: campfire + contributors: Henrystats + config: + tags: ['avalanche', 'nft', 'trades', 'campfore'] + description: "Campfire base trades" + tests: + - check_columns_nft_base_trades + - dbt_utils.unique_combination_of_columns: + combination_of_columns: ['block_number','tx_hash','sub_tx_trade_id'] + - check_seed: + seed_file: ref('campfire_avalanche_c_base_trades_seed') + match_columns: + - block_number + - tx_hash + - sub_tx_trade_id + check_columns: + - buyer + - seller + - nft_contract_address + - nft_token_id + - price_raw \ No newline at end of file diff --git a/models/_sector/nft/trades/chains/avalanche_c/platforms/campfire_avalanche_c_base_trades.sql b/models/_sector/nft/trades/chains/avalanche_c/platforms/campfire_avalanche_c_base_trades.sql new file mode 100644 index 00000000000..41fcdec49d0 --- /dev/null +++ b/models/_sector/nft/trades/chains/avalanche_c/platforms/campfire_avalanche_c_base_trades.sql @@ -0,0 +1,51 @@ +{{ config( + schema='campfire_avalanche_c', + alias = 'base_trades', + materialized = 'incremental', + file_format = 'delta', + incremental_strategy = 'merge', + unique_key = ['block_number','tx_hash','sub_tx_trade_id'] +)}} + +{% set project_start_date = '2022-03-14' %} + +WITH + +base_trades as ( +SELECT + 'avalanche_c' as blockchain, + 'campfire' as project, + 'v1' as project_version, + evt_block_time as block_time, + date_trunc('day',evt_block_time) as block_date, + date_trunc('month',evt_block_time) as block_month, + nftTokenId as nft_token_id, + 'secondary' as trade_type, + UINT256 '1' as nft_amount, + CASE + WHEN kind = UNIT256 '1' THEN 'Buy' + ELSE 'Sell' + END as trade_category, + seller, + buyer, + price as price_raw, + 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7 as currency_contract, + nftContractAddress as nft_contract_address, + evt_tx_hash as tx_hash, + contract_address as project_contract_address, + evt_block_number as block_number, + CAST(NULL as UINT256) as platform_fee_amount_raw, + CAST(NULL as UINT256) as royalty_fee_amount_raw, + CAST(NULL as VARBINARY) as royalty_fee_address, + CAST(NULL as VARBINARY) as platform_fee_address, + evt_index as sub_tx_trade_id +FROM +{{ source('campfire_avalanche_c', 'CampfireMarket_evt_Sale') }} +{% if is_incremental() %} +WHERE {{incremental_predicate('evt_block_time')}} +{% else %} +WHERE evt_block_time >= TIMESTAMP '{{project_start_date}}' +{% endif %} +) + +{{add_nft_tx_data('base_trades','avalanche_c')}} diff --git a/models/_sector/nft/trades/nft_base_trades.sql b/models/_sector/nft/trades/nft_base_trades.sql index e81ccde7a7a..663467e9b04 100644 --- a/models/_sector/nft/trades/nft_base_trades.sql +++ b/models/_sector/nft/trades/nft_base_trades.sql @@ -22,6 +22,7 @@ ,ref('nft_zksync_base_trades') ,ref('nft_scroll_base_trades') ,ref('nft_celo_base_trades') + ,ref('nft_avalanche_c_base_trades') ] %} with base_union as ( diff --git a/seeds/_sector/nft/_schema.yml b/seeds/_sector/nft/_schema.yml index bdde2902763..d6da8c87433 100644 --- a/seeds/_sector/nft/_schema.yml +++ b/seeds/_sector/nft/_schema.yml @@ -360,3 +360,13 @@ seeds: platform_fee_amount_raw: uint256 royalty_fee_amount_raw: uint256 nft_token_id: uint256 + + - name: campfire_avalanche_c_base_trades_seed + config: + column_types: + tx_hash: varbinary + buyer: varbinary + seller: varbinary + nft_contract_address: varbinary + price_raw: uint256 + nft_token_id: uint256 \ No newline at end of file diff --git a/seeds/_sector/nft/campfire_avalanche_c_base_trades_seed.csv b/seeds/_sector/nft/campfire_avalanche_c_base_trades_seed.csv new file mode 100644 index 00000000000..8809d87fc29 --- /dev/null +++ b/seeds/_sector/nft/campfire_avalanche_c_base_trades_seed.csv @@ -0,0 +1,3 @@ +block_number,tx_hash,sub_tx_trade_id,buyer,seller,nft_contract_address,nft_token_id,price_raw +12115532,0xe30683aa12c236c3f8bb6d09e32aa096e5a3410e9b6a19398e19179e4bfbc9c5,6,0xd2d3fc6abc92a146062f222e042698c1057b04ba,0xd55316fc244c7f5b44dc246e725c1c6c3e0cb8c2,0x5e4504663ab2a8060715a1d1f162873f39df9abf,3,10000000000000000 +27822010,0x498b845045c8c9953aa0cb8447fe8aec5347dada2e274ad3562224f5499c8776,2,0x39ffa0838b7b89e35dbf1ff2017001769b76dd37,0x767dc13b7c297b214489d7324652830570a5a108,0xe2f91f3c873ea808ac7307d5ccc81544a5f08aef,0,1000000000000000000 diff --git a/sources/_sector/nft/trades/avalanche_c_sources.yml b/sources/_sector/nft/trades/avalanche_c_sources.yml new file mode 100644 index 00000000000..283bf0561ad --- /dev/null +++ b/sources/_sector/nft/trades/avalanche_c_sources.yml @@ -0,0 +1,6 @@ +version: 2 + +sources: + - name: campfire_avalanche_c + tables: + - name: CampfireMarket_evt_Sale \ No newline at end of file From 2896a608d7d6cf6cbde43bb2576d39b12be9a070 Mon Sep 17 00:00:00 2001 From: Henrystats <65398020+henrystats@users.noreply.github.com> Date: Fri, 22 Mar 2024 22:09:04 +0100 Subject: [PATCH 2/2] Typo fix --- .../avalanche_c/platforms/campfire_avalanche_c_base_trades.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/_sector/nft/trades/chains/avalanche_c/platforms/campfire_avalanche_c_base_trades.sql b/models/_sector/nft/trades/chains/avalanche_c/platforms/campfire_avalanche_c_base_trades.sql index 41fcdec49d0..ec10477ad01 100644 --- a/models/_sector/nft/trades/chains/avalanche_c/platforms/campfire_avalanche_c_base_trades.sql +++ b/models/_sector/nft/trades/chains/avalanche_c/platforms/campfire_avalanche_c_base_trades.sql @@ -23,7 +23,7 @@ SELECT 'secondary' as trade_type, UINT256 '1' as nft_amount, CASE - WHEN kind = UNIT256 '1' THEN 'Buy' + WHEN kind = UINT256 '1' THEN 'Buy' ELSE 'Sell' END as trade_category, seller,