2023-03-11 14:50:22 -08:00
|
|
|
use crate::{
|
|
|
|
database::{fetchers::fetch_latest_finished_candle, Resolution},
|
|
|
|
trade_fetching::{parsing::OpenBookFillEventLog, scrape::fetch_market_infos},
|
|
|
|
utils::Config,
|
|
|
|
};
|
|
|
|
use database::{
|
|
|
|
database::{connect_to_database, setup_database},
|
|
|
|
fetchers::fetch_earliest_fill,
|
|
|
|
};
|
2023-03-07 22:45:37 -08:00
|
|
|
use dotenv;
|
2023-03-11 14:50:22 -08:00
|
|
|
use solana_sdk::pubkey::Pubkey;
|
2023-03-05 22:52:42 -08:00
|
|
|
use tokio::sync::mpsc;
|
|
|
|
|
2023-03-11 14:50:22 -08:00
|
|
|
mod candle_batching;
|
2023-03-05 22:52:42 -08:00
|
|
|
mod database;
|
|
|
|
mod trade_fetching;
|
|
|
|
mod utils;
|
|
|
|
|
|
|
|
#[tokio::main]
|
|
|
|
async fn main() -> anyhow::Result<()> {
|
2023-03-07 22:45:37 -08:00
|
|
|
dotenv::dotenv().ok();
|
|
|
|
|
|
|
|
let rpc_url: String = dotenv::var("RPC_URL").unwrap();
|
|
|
|
let database_url: String = dotenv::var("DATABASE_URL").unwrap();
|
|
|
|
|
|
|
|
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-11 14:50:22 -08:00
|
|
|
println!("{:?}", market_infos);
|
2023-03-05 22:52:42 -08:00
|
|
|
|
|
|
|
let pool = connect_to_database(&config).await?;
|
2023-03-11 14:50:22 -08:00
|
|
|
// setup_database(&pool, market_infos).await?;
|
2023-03-05 22:52:42 -08:00
|
|
|
|
2023-03-11 14:50:22 -08:00
|
|
|
// let (fill_sender, fill_receiver) = mpsc::channel::<OpenBookFillEventLog>(1000);
|
2023-03-05 22:52:42 -08:00
|
|
|
|
2023-03-07 22:45:37 -08:00
|
|
|
// tokio::spawn(async move {
|
2023-03-11 14:50:22 -08:00
|
|
|
// trade_fetching::scrape::scrape(&config, fill_sender.clone()).await;
|
2023-03-07 22:45:37 -08:00
|
|
|
// });
|
|
|
|
|
2023-03-11 14:50:22 -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?;
|
2023-03-11 14:50:22 -08:00
|
|
|
|
|
|
|
candle_batching::batcher::batch_candles(&pool, market_infos).await;
|
|
|
|
|
2023-03-05 22:52:42 -08:00
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
// use getconfirmedsignaturesforaddres2 to scan txns
|
|
|
|
// find filleventlog events
|
|
|
|
// parse trade data
|
|
|
|
// persist the last 3 months on differnet timescales
|