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

71 lines
2.0 KiB
Rust
Raw Normal View History

2023-03-11 14:50:22 -08:00
use crate::{
2023-03-12 00:13:57 -08:00
candle_batching::batch_candles,
database::{fetch::fetch_latest_finished_candle, insert::persist_candles, Candle, Resolution},
2023-03-11 14:50:22 -08:00
trade_fetching::{parsing::OpenBookFillEventLog, scrape::fetch_market_infos},
utils::Config,
};
use database::{
2023-03-12 00:13:57 -08:00
fetch::fetch_earliest_fill,
initialize::{connect_to_database, setup_database},
2023-03-11 14:50:22 -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<()> {
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
// tokio::spawn(async move {
2023-03-12 00:13:57 -08:00
// trade_fetching::scrape::scrape(&config, fill_sender.clone()).await; TODO: send the vec, it's okay
// });
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
2023-03-12 00:13:57 -08:00
let (candle_sender, candle_receiver) = mpsc::channel::<Vec<Candle>>(1000);
let batch_pool = pool.clone();
tokio::spawn(async move {
batch_candles(batch_pool, &candle_sender, market_infos).await;
});
let persist_pool = pool.clone();
// tokio::spawn(async move {
persist_candles(persist_pool, candle_receiver).await;
// });
loop {}
2023-03-11 14:50:22 -08:00
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