import logging as logger
import pandas as pd

class Recommendations:

    def __init__(self):

        self._recs = {"personal": None, "default": None}

    def load(self, rec_type, path, **kwargs):
        """
        Загружает рекомендации из файла
        """

        logger.info(f"Loading recommendations, type: {rec_type}")
        self._recs[rec_type] = pd.read_parquet(path, **kwargs)
        if rec_type == "personal":
            self._recs[rec_type] = self._recs[rec_type].set_index("user_id")
        logger.info(f"Loaded")

    def get(self, user_id: int, k: int=100):
        """
        Возвращает список рекомендаций для пользователя
        """
        try:
            recs = self._recs["personal"].loc[user_id]
            recs = recs["item_id"].to_list()[:k]
        except KeyError:
            recs = self._recs["default"]
            recs = recs["item_id"].to_list()[:k]
        except:
            logger.error("No recommendations found")
            recs = []

        if not recs:
            logger.warning(f"No default recommendations available for user {user_id}")
            recs = []
        else:
            logger.info(f'recs: {recs}')
            
        return recs