"""
Lazy Gemini model that reads its API key from the dynamic credential store
(master admin panel → Credentials) on every call, so key changes take
effect without a server restart.

Drop-in replacement for the old module-level
`genai.configure(...); model = genai.GenerativeModel(...)` pattern —
only `.generate_content()` is used across the codebase.
"""
import google.generativeai as genai

from master_admin.credentials import get_credential

MODEL_NAME = "models/gemini-flash-latest"


class LazyGeminiModel:
    def __init__(self, model_name=MODEL_NAME):
        self._model_name = model_name
        self._configured_key = None
        self._model = None

    def _ensure(self):
        key = get_credential("GEMINI_API_KEY")
        if self._model is None or key != self._configured_key:
            genai.configure(api_key=key)
            self._configured_key = key
            self._model = genai.GenerativeModel(self._model_name)
        return self._model

    def generate_content(self, *args, **kwargs):
        return self._ensure().generate_content(*args, **kwargs)


model = LazyGeminiModel()
