sharenet/backend/crates/sharenet-api-memory/src/main.rs

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(())
}