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