Skip to content

Commit fb472e8

Browse files
committed
Update mutations for relay
1 parent 42522b4 commit fb472e8

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

inventory/schema.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import graphene
2-
from graphene import Node
2+
from graphene import relay, Node
33
from graphene_django import DjangoObjectType
44
from django_filters import OrderingFilter
55
from graphene_django.filter import DjangoFilterConnectionField
6+
from graphql_relay import from_global_id
67
from .models import Product, InventoryItem, QuantitativeUnit
78
from core.models import User
89

@@ -69,18 +70,28 @@ def resolve_inventory_items(self, info, **kwargs):
6970
return InventoryItem.objects.all().order_by('expiration_date')
7071

7172

72-
class UpdateItemQuantity(graphene.Mutation):
73-
class Arguments:
73+
class UpdateItemQuantity(relay.ClientIDMutation):
74+
success = graphene.Boolean()
75+
message = graphene.String()
76+
inventory_item = graphene.Field(lambda: InventoryItemType)
77+
78+
class Input:
7479
id = graphene.String(required=True)
7580
quantity = graphene.Int(required=True)
7681

77-
inventory_item = graphene.Field(InventoryItemType)
82+
def mutate_and_get_payload(cls, info, id, quantity, **kwargs):
83+
try:
84+
item_id = from_global_id(id)[1]
7885

79-
def mutate(self, info, id, quantity, **kwargs):
80-
inventory_item = InventoryItem.objects.get(id=id)
81-
inventory_item.quantity = quantity
82-
inventory_item.save()
83-
return UpdateItemQuantity(inventory_item=inventory_item)
86+
inventory_item = InventoryItem.objects.get(id=item_id)
87+
inventory_item.quantity = quantity
88+
inventory_item.save()
89+
90+
return UpdateItemQuantity(success=True, inventory_item=inventory_item)
91+
except InventoryItem.DoesNotExist:
92+
return UpdateItemQuantity(success=False, message="Item not found.")
93+
except Exception as e:
94+
return UpdateItemQuantity(success=False, message=f"An error occurred: {str(e)}")
8495

8596

8697
class QuantitativeUnitInput(graphene.InputObjectType):
@@ -113,18 +124,20 @@ def mutate(self, info, new_inventory_item):
113124
return CreateInventoryItem(inventory_item=inventory_item)
114125

115126

116-
class DeleteInventoryItem(graphene.Mutation):
127+
class DeleteInventoryItem(relay.ClientIDMutation):
117128
success = graphene.Boolean()
118129
message = graphene.String()
119130

120-
class Arguments:
131+
class Input:
121132
id = graphene.ID(required=True)
122133

123-
def mutate(self, info, id):
134+
item = graphene.Field(InventoryItemType)
135+
136+
def mutate_and_get_payload(cls, info, id):
124137
try:
125-
# Retrieve the item by ID
126-
item = InventoryItem.objects.get(id=id)
127-
# Delete the item
138+
item_id = from_global_id(id)[1]
139+
140+
item = InventoryItem.objects.get(id=item_id)
128141
item.delete()
129142
return DeleteInventoryItem(success=True, message="Item deleted successfully.")
130143
except InventoryItem.DoesNotExist:

0 commit comments

Comments
 (0)