Files
crank/apps/admin-api/src/main.rs
T
2026-03-25 19:12:58 +03:00

44 lines
1.2 KiB
Rust

mod app;
mod error;
mod routes;
mod service;
mod state;
mod storage;
use std::{env, net::SocketAddr, path::PathBuf};
use mcpaas_registry::PostgresRegistry;
use tokio::net::TcpListener;
use tracing::info;
use crate::{app::build_app, service::AdminService, state::AppState};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt()
.with_env_filter(
env::var("MCPAAS_LOG_LEVEL")
.unwrap_or_else(|_| "admin_api=info,tower_http=info".into()),
)
.init();
let database_url = env::var("MCPAAS_DATABASE_URL")?;
let storage_root = PathBuf::from(
env::var("MCPAAS_STORAGE_ROOT").unwrap_or_else(|_| "/var/lib/rmcp/storage".into()),
);
let bind_addr = env::var("MCPAAS_ADMIN_BIND").unwrap_or_else(|_| "0.0.0.0:3001".into());
let socket_addr: SocketAddr = bind_addr.parse()?;
let registry = PostgresRegistry::connect(&database_url).await?;
let state = AppState {
service: AdminService::new(registry, storage_root),
};
let app = build_app(state);
let listener = TcpListener::bind(socket_addr).await?;
info!("admin-api listening on {}", socket_addr);
axum::serve(listener, app).await?;
Ok(())
}