33 lines
No EOL
1 KiB
Rust
33 lines
No EOL
1 KiB
Rust
use std::net::SocketAddr;
|
|
use std::str::FromStr;
|
|
|
|
use api::run as run_api;
|
|
use application::Service;
|
|
use domain::{User, Product};
|
|
use memory::{InMemoryProductRepository, InMemoryUserRepository};
|
|
use std::env;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> anyhow::Result<()> {
|
|
// Load environment variables from config file
|
|
dotenvy::from_path("config/api-memory.env").ok();
|
|
|
|
// Get configuration from environment variables
|
|
let host = env::var("HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
|
|
let port = env::var("PORT").unwrap_or_else(|_| "3001".to_string());
|
|
|
|
// Create repositories
|
|
let user_repo = InMemoryUserRepository::new();
|
|
let product_repo = InMemoryProductRepository::new();
|
|
|
|
// Create services
|
|
let user_service = Service::<User, _>::new(user_repo);
|
|
let product_service = Service::<Product, _>::new(product_repo);
|
|
|
|
// Run API server
|
|
let addr = format!("{}:{}", host, port);
|
|
let addr = SocketAddr::from_str(&addr)?;
|
|
run_api(addr, user_service, product_service).await;
|
|
|
|
Ok(())
|
|
}
|