from graphene import Field
from graphene import ID, Mutation, List
from graphene_django.forms.mutation import DjangoModelFormMutation
from graphene_crud_maker.utils import CustomModelForm

from App_.models import Base_
from App_.graphql.query import Base_Type


class Base_Form(CustomModelForm):
    class Meta:
        model = Base_
        pass_fields_


class Base_Mutation(DjangoModelFormMutation):
    class Meta:
        form_class = Base_Form

    data = Field(Base_Type)

    def perform_mutate(form, info):
        try:
            data = form.save()
            return Base_Mutation(data=data)
        except form.DoesNotExis:
            return None



class RemoveBase_(Mutation):
    class Arguments:
        ids = List(ID)

    class Meta:
        output = List(Base_Type)

    def mutate(self, info, **kwargs):
        deleted_items = []
        for item in Base_.objects.filter(pk__in=kwargs['ids']):
            item.delete()
            deleted_items.append(item)
        return deleted_items

