"""PPM Infrastructure — Resource Supply Repository Implementation."""
from uuid import UUID

from ..persistence.models import ResourceSupplyModel
from .mappers import ResourceSupplyMapper
from ...domain.repositories.interfaces import ResourceSupplyRepository


class DjangoResourceSupplyRepository(ResourceSupplyRepository):

    def save(self, entity):
        model = ResourceSupplyMapper.to_model(entity)
        model.tenant_id = entity.tenant_id
        model.save()
        return ResourceSupplyMapper.to_entity(model)

    def get_by_id(self, id: UUID):
        try:
            model = ResourceSupplyModel.objects.get(pk=id)
            return ResourceSupplyMapper.to_entity(model)
        except ResourceSupplyModel.DoesNotExist:
            return None

    def find(self, **filters) -> list:
        qs = ResourceSupplyModel.objects.filter(**filters)
        return [ResourceSupplyMapper.to_entity(m) for m in qs]

    def delete(self, id: UUID) -> None:
        ResourceSupplyModel.objects.filter(pk=id).delete()

    def find_by_plan(self, capacity_plan_id: UUID) -> list:
        qs = ResourceSupplyModel.objects.filter(capacity_plan_id=capacity_plan_id)
        return [ResourceSupplyMapper.to_entity(m) for m in qs]
