Add assets microservice base

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2023-08-28 09:17:26 +03:00
parent 068f2d8601
commit 8544fc79f5
22 changed files with 3010 additions and 1 deletions

View File

@@ -0,0 +1,39 @@
use axum::{
routing::{delete, get, post},
Extension, Router, Server,
};
use common::alpaca::create_alpaca_pool;
use dotenv::dotenv;
use sqlx::PgPool;
use std::{env, error::Error, net::SocketAddr};
mod routes;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
dotenv().ok();
let database_pool = PgPool::connect(&env::var("DATABASE_URL").unwrap()).await?;
let alpaca_pool = create_alpaca_pool(
&env::var("APCA_API_BASE_URL").unwrap(),
&env::var("APCA_API_KEY_ID").unwrap(),
&env::var("APCA_API_SECRET_KEY").unwrap(),
10,
)?;
let app = Router::new()
.route("/assets", get(routes::get_assets))
.route("/assets/:symbol", get(routes::get_asset))
.route("/assets", post(routes::add_asset))
.route("/assets/:symbol", post(routes::update_asset))
.route("/assets/:symbol", delete(routes::delete_asset))
.layer(Extension(database_pool))
.layer(Extension(alpaca_pool));
let addr = SocketAddr::from(([0, 0, 0, 0], 7878));
println!("Listening on {}...", addr);
Server::bind(&addr).serve(app.into_make_service()).await?;
Ok(())
}