import os
import base64
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
if not OPENAI_API_KEY:
    raise RuntimeError("OPENAI_API_KEY not set in .env file")

client = OpenAI(api_key=OPENAI_API_KEY)

app = FastAPI()

# Permitir CORS para el frontend
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

class PromptRequest(BaseModel):
    prompt: str
    size: str = "1024x1024"  # Opcional, por defecto cuadrado
    quality: str = "high"     # Opcional, por defecto alta
    # background: str = "auto"  # Eliminado, no soportado por OpenAI

@app.post("/generate-image")
def generate_image(req: PromptRequest):
    try:
        result = client.images.generate(
            model="gpt-image-1",
            prompt=req.prompt,
            size=req.size,
            quality=req.quality,
            # background=req.background,  # Eliminado, no soportado
        )
        image_base64 = result.data[0].b64_json
        return {"image_base64": image_base64}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
