From 985de2852a6b9fbdc024efdea818932972bf9e56 Mon Sep 17 00:00:00 2001 From: Joel Date: Wed, 24 Jun 2026 09:10:08 +0100 Subject: [PATCH] Fix: simplificar main.rs sin tower-sessions para MVP, usar expect en vez de anyhow --- backend/src/main.rs | 47 ++++++++++++++++----------------------------- 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/backend/src/main.rs b/backend/src/main.rs index 05f73bb..c1d5dbc 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -12,11 +12,6 @@ use tower_http::{ compression::CompressionLayer, limit::RequestBodyLimitLayer, }; -use tower_sessions::{ - SessionManagerLayer, - cookie::Key, -}; -use tower_sessions_sqlx_store::PostgresStore; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; mod routes; @@ -41,18 +36,22 @@ struct HealthResponse { db: &'static str, } -async fn health() -> Json { +async fn health(state: axum::extract::State) -> Json { + let db_status = match sqlx::query("SELECT 1").fetch_one(&state.db).await { + Ok(_) => "connected", + Err(_) => "disconnected", + }; Json(HealthResponse { status: "ok", version: env!("CARGO_PKG_VERSION"), - db: "connected", + db: db_status, }) } // ─── Entrypoint ─────────────────────────────────────────────── #[tokio::main] -async fn main() -> anyhow::Result<()> { +async fn main() { // --- Logging --- tracing_subscriber::registry() .with(tracing_subscriber::EnvFilter::try_from_default_env() @@ -65,7 +64,7 @@ async fn main() -> anyhow::Result<()> { let database_url = std::env::var("DATABASE_URL") .unwrap_or_else(|_| { - "postgres://joel:factory_admin_2026@192.168.1.87:5432/nutriapp".to_string() + "postgres://joel:***@postgres.default.svc.cluster.local:5432/nutriapp".to_string() }); let host = std::env::var("HOST").unwrap_or_else(|_| "0.0.0.0".to_string()); @@ -78,51 +77,39 @@ async fn main() -> anyhow::Result<()> { let pool = PgPoolOptions::new() .max_connections(10) .connect(&database_url) - .await?; + .await + .expect("❌ No se pudo conectar a PostgreSQL"); tracing::info!("✅ PostgreSQL conectado"); - // --- Migraciones automáticas --- + // --- Migraciones --- sqlx::migrate!("./migrations") .run(&pool) - .await?; + .await + .expect("❌ Migraciones fallaron"); tracing::info!("✅ Migraciones aplicadas"); - // --- Session store --- - let session_store = PostgresStore::new(pool.clone()); - session_store.migrate().await?; - - let session_layer = SessionManagerLayer::new(session_store) - .with_secure(false); // false en dev (sin HTTPS), true en prod - // --- App state --- let state = AppState { db: pool }; - // --- Router --- + // --- Router (sin auth por ahora — MVP) --- let app = Router::new() - // API .route("/api/health", get(health)) .nest("/api", routes::api_routes()) - // WebSocket .nest("/ws", ws::ws_routes()) - // Frontend estático (producción) .nest_service("/", ServeDir::new("../frontend/dist") .fallback(ServeFile::new("../frontend/dist/index.html"))) - // Middleware (orden importa: último = más externo) .layer(CompressionLayer::new()) - .layer(RequestBodyLimitLayer::new(10 * 1024 * 1024)) // 10MB + .layer(RequestBodyLimitLayer::new(10 * 1024 * 1024)) .layer(CorsLayer::permissive()) .layer(TraceLayer::new_for_http()) - .layer(session_layer) .with_state(state); // --- Arranque --- let addr = format!("{host}:{port}"); tracing::info!("🚀 NutriApp corriendo en http://{addr}"); - let listener = tokio::net::TcpListener::bind(&addr).await?; - axum::serve(listener, app).await?; - - Ok(()) + let listener = tokio::net::TcpListener::bind(&addr).await.unwrap(); + axum::serve(listener, app).await.unwrap(); }