from insightface.app import FaceAnalysis

from config.settings import settings
from config.logger import logger


class ModelManager:

    _model = None

    @classmethod
    def load_model(cls):

        if cls._model is None:

            logger.info("Loading AI Model...")

            model = FaceAnalysis(
                name=settings.MODEL_NAME
            )

            model.prepare(

                ctx_id=settings.CTX_ID,

                det_size=(
                    settings.DETECTION_WIDTH,
                    settings.DETECTION_HEIGHT
                )

            )

            cls._model = model

            logger.info(
                f"{settings.MODEL_NAME} loaded successfully."
            )

        return cls._model

    @classmethod
    def get_model(cls):

        if cls._model is None:

            raise RuntimeError(
                "Model not loaded."
            )

        return cls._model