openbook-candles/src/server/main.rs

65 lines
1.7 KiB
Rust
Raw Normal View History

use actix_web::{
middleware::Logger,
web::{self, Data},
App, HttpServer,
};
2023-03-13 09:51:30 -07:00
use candles::get_candles;
use dotenv;
2023-03-13 09:51:30 -07:00
use openbook_candles::{
candle_creation::trade_fetching::scrape::fetch_market_infos,
database::initialize::connect_to_database,
structs::markets::load_markets,
utils::{Config, WebContext},
};
use traders::get_top_traders_by_base_volume;
2023-03-12 22:03:37 -07:00
use crate::traders::get_top_traders_by_quote_volume;
2023-03-12 22:03:37 -07:00
mod candles;
mod server_error;
2023-03-13 09:51:30 -07:00
mod traders;
2023-03-05 23:11:15 -08:00
#[actix_web::main]
2023-03-12 22:03:37 -07:00
async fn main() -> std::io::Result<()> {
dotenv::dotenv().ok();
env_logger::init();
2023-03-12 22:03:37 -07:00
let rpc_url: String = dotenv::var("RPC_URL").unwrap();
let database_url: String = dotenv::var("DATABASE_URL").unwrap();
2023-03-13 09:51:30 -07:00
let max_pg_pool_connections: u32 = dotenv::var("MAX_PG_POOL_CONNS_SERVER")
.unwrap()
.parse::<u32>()
.unwrap();
2023-03-12 22:03:37 -07:00
let config = Config {
rpc_url: rpc_url.clone(),
database_url: database_url.clone(),
max_pg_pool_connections,
};
2023-03-05 23:11:15 -08:00
2023-03-12 22:03:37 -07:00
let markets = load_markets("/Users/dboures/dev/openbook-candles/markets.json");
let market_infos = fetch_market_infos(&config, markets).await.unwrap();
let pool = connect_to_database(&config).await.unwrap();
let context = Data::new(WebContext {
pool,
markets: market_infos,
});
2023-03-05 23:11:15 -08:00
2023-03-13 09:51:30 -07:00
println!("Starting server");
HttpServer::new(move || {
2023-03-05 23:11:15 -08:00
App::new()
.wrap(Logger::default())
2023-03-13 09:51:30 -07:00
.app_data(context.clone())
.service(
web::scope("/api")
.service(get_candles)
.service(get_top_traders_by_base_volume)
.service(get_top_traders_by_quote_volume),
2023-03-13 09:51:30 -07:00
)
2023-03-05 23:11:15 -08:00
})
.bind(("127.0.0.1", 8080))?
.run()
.await
2023-03-05 22:52:42 -08:00
}