from django.conf import settings

from domain.dataset import LittleDataSet
from imdb.models import GenreModel, RegionModel
from utils.decorators import cache_result, cache_remove


class Genre(LittleDataSet):
    cache_key = "Genres"
    model = GenreModel

    @cache_result(settings.EXPIRE_TIME, cache_key)
    def _load_from_db(self):
        items = GenreModel.objects.filter(status=1)
        return list(items)

    @cache_remove(cache_key)
    def _insert(self, name):
        try:
            obj = self.model(name=name)
            obj.save()
            return obj
        except Exception as e:
            pass

    @cache_remove(cache_key)
    def bulk_insert(self, name_list):
        obj_list = [self.model(name=name) for name in name_list]
        self.model.objects.bulk_create(obj_list, ignore_conflicts=True)


class Region(LittleDataSet):
    cache_key = "Regions"
    model = RegionModel

    @cache_result(settings.EXPIRE_TIME, cache_key)
    def _load_from_db(self):
        items = self.model.objects.all()
        return list(items)

    @cache_remove(cache_key)
    def _insert(self, name):
        try:
            obj = self.model(name=name)
            obj.save()
            return obj
        except Exception as e:
            pass
