
from management.models.tag import Tag
from management.repositories.base import BaseRepository
from django.db import transaction

from management.serializers.tag_serializer import TagSerializer

class TagRepository(BaseRepository):
    entity=Tag

    @transaction.atomic
    def save(self, dto) -> tuple:
        tag_id = dto.get("id")
        if tag_id:
            try:
                instance = Tag.objects.get(id=tag_id)
            except Tag.DoesNotExist:
                return False, {"detail": "tag not found"}
            serializer = TagSerializer(instance, data=dto, partial=True)
        else:
            serializer = TagSerializer(data=dto)
        

        serializer.is_valid(raise_exception=True)
        tag = serializer.save()
        return True, {"id": tag.id}
