Skip to content

Commit 89d69c2

Browse files
committed
add sidekiq support
1 parent 463a56e commit 89d69c2

File tree

7 files changed

+414
-59
lines changed

7 files changed

+414
-59
lines changed

Cargo.lock

+82
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libs/nft-events/src/erc1155_evm.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! This module is a library to get ERC1155 transfer events.
2-
use crate::{EvmClient, Result, erc1155_db::add_collection_to_db};
2+
use crate::{EvmClient, Result};
33
use array_bytes::hex2bytes_unchecked as bytes;
4-
use web3::{ethabi::token, types::{Bytes, Log, H160, H256, U256}};
4+
use web3::types::{Bytes, Log, H160, H256, U256};
55

66
/// The Erc721 Transfer Event Wrapper
77
#[derive(Debug, Clone)]

livenets/ethereum-nft-tracker/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,6 @@ confy = "0.4.0"
2222
async-trait = "0.1.51"
2323
directories-next = "2.0.0"
2424
rusqlite = "0.25.3"
25+
26+
serde_json = "1.0"
27+
sidekiq = "0.9"
+39-57
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,17 @@
11
use directories_next::ProjectDirs;
2-
use nft_events::{Erc1155Event, Erc1155EventCallback, Erc721Event, Erc721EventCallback};
32
use std::env;
43
use std::path::PathBuf;
54

5+
pub mod sidekiq_helper;
6+
mod println_callbacks;
7+
mod sidekiq_callbacks;
8+
69
#[macro_use]
710
extern crate log;
811

912
#[macro_use]
1013
extern crate async_trait;
1114

12-
struct EthereumErc721EventCallback {}
13-
14-
#[async_trait]
15-
impl Erc721EventCallback for EthereumErc721EventCallback {
16-
async fn on_erc721_event(
17-
&mut self,
18-
event: Erc721Event,
19-
name: String,
20-
symbol: String,
21-
total_supply: Option<u128>,
22-
token_uri: String,
23-
) -> nft_events::Result<()> {
24-
println!("------------------------------------------------------------------------------------------");
25-
println!("event: {:?}", event);
26-
println!(
27-
"name: {:?}, symbol: {:?}, token_uri: {:?}",
28-
name, symbol, token_uri
29-
);
30-
println!("total_supply: {:?}", total_supply);
31-
32-
Ok(())
33-
}
34-
}
35-
36-
struct EthereumErc1155EventCallback {}
37-
38-
#[async_trait]
39-
impl Erc1155EventCallback for EthereumErc1155EventCallback {
40-
async fn on_erc1155_event(
41-
&mut self,
42-
event: Erc1155Event,
43-
token_uri: String,
44-
) -> nft_events::Result<()> {
45-
println!("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
46-
println!("event: {:?}", event);
47-
println!("token_uri: {:?}", token_uri);
48-
49-
Ok(())
50-
}
51-
}
5215

5316
use serde::{Deserialize, Serialize};
5417

@@ -95,26 +58,45 @@ async fn main() -> anyhow::Result<()> {
9558
info!(" Track step : {} blocks", step);
9659

9760
let args: Vec<String> = env::args().collect();
98-
if args.len() != 2 {
61+
if args.len() == 1 {
9962
println!("Usage: ethereum-nft-tracker <ETHEREUM_BLOCK_NUMBER>")
10063
} else {
101-
if let Ok(start_from) = args[1].parse::<u64>() {
102-
let mut erc721_cb = EthereumErc721EventCallback {};
103-
let mut erc1155_cb = EthereumErc1155EventCallback {};
104-
nft_events::start_tracking(
105-
chain_name,
106-
rpc,
107-
data_dir,
108-
start_from,
109-
step,
110-
&mut erc721_cb,
111-
&mut erc1155_cb,
112-
)
113-
.await?;
64+
if args.len() == 2 {
65+
if let Ok(start_from) = args[1].parse::<u64>() {
66+
let mut erc721_cb = println_callbacks::EthereumErc721EventCallback {};
67+
let mut erc1155_cb = println_callbacks::EthereumErc1155EventCallback {};
68+
nft_events::start_tracking(
69+
chain_name,
70+
rpc,
71+
data_dir,
72+
start_from,
73+
step,
74+
&mut erc721_cb,
75+
&mut erc1155_cb,
76+
)
77+
.await?;
78+
} else {
79+
println!("Usage: ethereum-nft-tracker <ETHEREUM_BLOCK_NUMBER>")
80+
}
11481
} else {
115-
println!("Usage: ethereum-nft-tracker <ETHEREUM_BLOCK_NUMBER>")
82+
if let Ok(start_from) = args[1].parse::<u64>() {
83+
let mut erc721_cb = sidekiq_callbacks::EthereumErc721EventCallback {};
84+
let mut erc1155_cb = sidekiq_callbacks::EthereumErc1155EventCallback {};
85+
nft_events::start_tracking(
86+
chain_name,
87+
rpc,
88+
data_dir,
89+
start_from,
90+
step,
91+
&mut erc721_cb,
92+
&mut erc1155_cb,
93+
)
94+
.await?;
95+
} else {
96+
println!("Usage: ethereum-nft-tracker <ETHEREUM_BLOCK_NUMBER>")
97+
}
98+
11699
}
117100
}
118-
119101
Ok(())
120102
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
use nft_events::{Erc1155Event, Erc1155EventCallback, Erc721Event, Erc721EventCallback};
2+
3+
pub struct EthereumErc721EventCallback {}
4+
5+
#[async_trait]
6+
impl Erc721EventCallback for EthereumErc721EventCallback {
7+
async fn on_erc721_event(
8+
&mut self,
9+
event: Erc721Event,
10+
name: String,
11+
symbol: String,
12+
total_supply: Option<u128>,
13+
token_uri: String,
14+
) -> nft_events::Result<()> {
15+
println!("------------------------------------------------------------------------------------------");
16+
println!("event: {:?}", event);
17+
println!(
18+
"name: {:?}, symbol: {:?}, token_uri: {:?}",
19+
name, symbol, token_uri
20+
);
21+
println!("total_supply: {:?}", total_supply);
22+
23+
Ok(())
24+
}
25+
}
26+
27+
pub struct EthereumErc1155EventCallback {}
28+
29+
#[async_trait]
30+
impl Erc1155EventCallback for EthereumErc1155EventCallback {
31+
async fn on_erc1155_event(
32+
&mut self,
33+
event: Erc1155Event,
34+
token_uri: String,
35+
) -> nft_events::Result<()> {
36+
println!("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
37+
println!("event: {:?}", event);
38+
println!("token_uri: {:?}", token_uri);
39+
40+
Ok(())
41+
}
42+
}
43+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
use nft_events::{Erc1155Event, Erc1155EventCallback, Erc721Event, Erc721EventCallback};
2+
use crate::sidekiq_helper;
3+
4+
pub struct EthereumErc721EventCallback {}
5+
6+
#[async_trait]
7+
impl Erc721EventCallback for EthereumErc721EventCallback {
8+
async fn on_erc721_event(
9+
&mut self,
10+
event: Erc721Event,
11+
name: String,
12+
symbol: String,
13+
total_supply: Option<u128>,
14+
token_uri: String,
15+
) -> nft_events::Result<()> {
16+
sidekiq_helper::send_erc721(
17+
"Ethereum".to_string(),
18+
event,
19+
name,
20+
symbol,
21+
token_uri,
22+
total_supply,
23+
);
24+
25+
Ok(())
26+
}
27+
}
28+
29+
pub struct EthereumErc1155EventCallback {}
30+
31+
#[async_trait]
32+
impl Erc1155EventCallback for EthereumErc1155EventCallback {
33+
async fn on_erc1155_event(
34+
&mut self,
35+
event: Erc1155Event,
36+
token_uri: String,
37+
) -> nft_events::Result<()> {
38+
sidekiq_helper::send_erc1155(
39+
"Ethereum".to_string(),
40+
event,
41+
token_uri,
42+
);
43+
44+
Ok(())
45+
}
46+
}
47+

0 commit comments

Comments
 (0)