import os
from pathlib import Path

from dotenv import load_dotenv

_backend_root = Path(__file__).resolve().parents[2]
_repo_root = _backend_root.parent

# Prime os.environ on first import (routers import before main.py assigns settings)
load_dotenv(_backend_root / ".env")
load_dotenv(_repo_root / ".env", override=True)
load_dotenv()


def _gemini_key() -> str:
    return (
        (os.getenv("GEMINI_API_KEY") or "").strip()
        or (os.getenv("GOOGLE_API_KEY") or "").strip()
        or "YOUR_GEMINI_API_KEY_NOT_SET"
    )


class Settings:
    """Instantiate via get_settings() so values reflect the current .env file."""

    PROJECT_NAME: str = "CropPilot Backend"
    MAX_FILE_SIZE_MB: int = 5

    def __init__(self) -> None:
        load_dotenv(_backend_root / ".env")
        load_dotenv(_repo_root / ".env", override=True)
        load_dotenv()
        self.GEMINI_API_KEY: str = _gemini_key()
        # Default: gemini-2.5-flash (new AI Studio keys often cannot use gemini-2.0-flash).
        # If this 404s for you, set GEMINI_MODEL in .env to a name from: genai.list_models() (e.g. gemini-2.5-pro).
        self.GEMINI_MODEL: str = (os.getenv("GEMINI_MODEL") or "gemini-2.5-flash").strip()
        groq = (os.getenv("GROQ_API_KEY") or "").strip()
        self.GROQ_API_KEY: str = groq if groq else "YOUR_GROQ_API_KEY_NOT_SET"


def get_settings() -> Settings:
    """Fresh settings each call so .env edits work without guessing import order."""
    return Settings()
