from fastapi import FastAPI from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker from sqlalchemy import text import os from dotenv import load_dotenv # Betöltjük a környezeti változókat load_dotenv() app = FastAPI(title="Service Finder API") # --- A FIX --- # Kiolvassuk a címet raw_url = os.getenv("DATABASE_URL") # Ha nincs beállítva, adunk egy vészhelyzeti alapértelmezettet if not raw_url: print("⚠️ FIGYELEM: Nincs DATABASE_URL, alapértelmezett használata!") # Itt a konténer belső nevét (postgres-db) használjuk raw_url = "postgresql://admin:MiskociA74@postgres-db:5432/service_finder" # A LÉNYEG: Ha hiányzik az '+asyncpg', hozzáadjuk! if "asyncpg" not in raw_url: DATABASE_URL = raw_url.replace("postgresql://", "postgresql+asyncpg://") print(f"🔧 URL javítva erre: {DATABASE_URL}") else: DATABASE_URL = raw_url # Motor indítása a javított URL-lel engine = create_async_engine(DATABASE_URL) AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) @app.get("/") async def root(): return {"message": "Service Finder API működik! 🚀"} @app.get("/vehicles") async def get_vehicles(): async with AsyncSessionLocal() as session: try: query = text(""" SELECT m.name as brand, vm.model_name, vm.category FROM ref.vehicle_models vm JOIN ref.vehicle_makes m ON vm.make_id = m.id ORDER BY m.name, vm.model_name """) result = await session.execute(query) vehicles = result.fetchall() return [{"brand": r.brand, "model": r.model_name, "category": r.category} for r in vehicles] except Exception as e: return {"error": str(e)}