openbook-candles/candle-creator/src/main.rs

53 lines
1.5 KiB
Rust
Raw Normal View History

2023-03-09 20:54:51 -08:00
use crate::{trade_fetching::{parsing::OpenBookFillEventLog, scrape::fetch_market_infos}, utils::Config};
2023-03-05 22:52:42 -08:00
use database::database::{connect_to_database, setup_database};
use dotenv;
2023-03-05 22:52:42 -08:00
use tokio::sync::mpsc;
mod database;
mod trade_fetching;
mod utils;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenv::dotenv().ok();
let rpc_url: String = dotenv::var("RPC_URL").unwrap();
let database_url: String = dotenv::var("DATABASE_URL").unwrap();
2023-03-09 20:54:51 -08:00
let config = Config {
rpc_url,
database_url,
max_pg_pool_connections: 5,
2023-03-05 22:52:42 -08:00
};
2023-03-09 20:54:51 -08:00
let markets = utils::load_markets("/Users/dboures/dev/openbook-candles/markets.json");
let market_infos = fetch_market_infos(&config, markets).await?;
2023-03-05 22:52:42 -08:00
let pool = connect_to_database(&config).await?;
2023-03-09 20:54:51 -08:00
setup_database(&pool, market_infos).await?;
2023-03-05 22:52:42 -08:00
let (fill_sender, fill_receiver) = mpsc::channel::<OpenBookFillEventLog>(1000);
2023-03-05 22:52:42 -08:00
// spawn a thread for each market?
// what are the memory implications?
// tokio::spawn(async move {
// trade_fetching::scrape::scrape(&config, fill_event_sender.clone()).await;
// });
2023-03-05 22:52:42 -08:00
tokio::spawn(async move {
trade_fetching::scrape::scrape(&config, fill_sender.clone()).await;
2023-03-05 22:52:42 -08:00
});
database::database::handle_fill_events(&pool, fill_receiver).await;
2023-03-05 22:52:42 -08:00
// trade_fetching::websocket::listen_logs().await?;
Ok(())
}
// use getconfirmedsignaturesforaddres2 to scan txns
// find filleventlog events
// parse trade data
// persist the last 3 months on differnet timescales