Improve query caching

This commit is contained in:
Keannu Christian Bernasol 2024-01-07 12:21:14 +08:00
parent 8e43e06ec2
commit e482979d20
4 changed files with 28 additions and 6 deletions

View file

@ -191,9 +191,10 @@ class TransactionSerializer(serializers.HyperlinkedModelSerializer):
# This updates the status field of all equipment instances in a single query
EquipmentInstance.objects.filter(
id__in=[equipment.id for equipment in equipments]).update(status='Available')
q = super().update(instance, validated_data)
cache.delete('available_equipment_instances')
cache.delete('equipment_instances')
return super().update(instance, validated_data)
return q
# For Approved transactions,
# If not changing to Borrowed or Cancelled, throw an error
@ -210,9 +211,10 @@ class TransactionSerializer(serializers.HyperlinkedModelSerializer):
# This updates the status field of all equipment instances in a single query
EquipmentInstance.objects.filter(
id__in=[equipment.id for equipment in equipments]).update(status='Available')
q = super().update(instance, validated_data)
cache.delete('available_equipment_instances')
cache.delete('equipment_instances')
return super().update(instance, validated_data)
return q
# If there are no issues and a transaction changes from Approved to Borrowed, label the selected equipment's statuses as Borrowed
if instance.transaction_status == "Approved" and validated_data.get('transaction_status') == "Borrowed":
@ -254,9 +256,10 @@ class TransactionSerializer(serializers.HyperlinkedModelSerializer):
# This updates the status field of all equipment instances in a single query
EquipmentInstance.objects.filter(
id__in=[equipment.id for equipment in equipments]).update(status='Available')
q = super().update(instance, validated_data)
cache.delete('available_equipment_instances')
cache.delete('equipment_instances')
return super().update(instance, validated_data)
return q
# If the transaction changes from Returned: Pending Checking to With Breakages, we create a Breakage Report instance
if instance.transaction_status == "Returned: Pending Checking" and validated_data.get('transaction_status') == "With Breakages: Pending Resolution":