from django.conf import settings

from injector.models import LSP
from domain.dataset import LittleDataSet
from utils.decorators import cache_result


class Lsp(LittleDataSet):
    cache_key = "Lsp"
    model = LSP

    @staticmethod
    def to_dict(query_obj):
        return {
            "name": query_obj.name,
            "alias": query_obj.alias,
        }

    @cache_result(settings.EXPIRE_TIME, cache_key)
    def _load_from_db(self):
        items = self.model.objects.all()
        return list(items)

    def get_obj_by_alias(self, alias):
        items = self._load_from_db()
        for obj in items:
            if obj.alias == alias:
                return obj

