diff --git a/api/resources/game.py b/api/resources/game.py index c51ac25..0555f09 100644 --- a/api/resources/game.py +++ b/api/resources/game.py @@ -3,7 +3,7 @@ from rest_framework.response import Response from rest_framework.views import APIView from game.models import Game -from ..serializers import GameSerializer +from ..serializers import GameSerializer, GameEventSerializer class GameResource(APIView): @@ -28,3 +28,19 @@ class GameSingleResource(APIView): serializer = GameSerializer(game) return Response(serializer.data, status=status.HTTP_200_OK) + + +class GameEventResource(APIView): + def post(self, request, game_id): + """ Creates a new event """ + + try: + Game.objects.get(pk=game_id) + except Game.DoesNotExist: + return Response(status=status.HTTP_404_NOT_FOUND) + + serializer = GameEventSerializer(data=request.data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) diff --git a/api/serializers/__init__.py b/api/serializers/__init__.py index 964a753..8872be8 100644 --- a/api/serializers/__init__.py +++ b/api/serializers/__init__.py @@ -1,4 +1,4 @@ -from .game import GameSerializer +from .game import GameSerializer, GameEventSerializer -__all__ = ["GameSerializer"] +__all__ = ["GameSerializer", "GameEventSerializer"] diff --git a/api/serializers/game.py b/api/serializers/game.py index 6b61620..c57a5ab 100644 --- a/api/serializers/game.py +++ b/api/serializers/game.py @@ -1,9 +1,15 @@ from rest_framework import serializers -from game.models import Game +from game.models import Game, GameEvent class GameSerializer(serializers.ModelSerializer): class Meta: model = Game fields = "__all__" + + +class GameEventSerializer(serializers.ModelSerializer): + class Meta: + model = GameEvent + fields = "__all__" diff --git a/api/urls.py b/api/urls.py index a1ff5ac..922fcaf 100644 --- a/api/urls.py +++ b/api/urls.py @@ -1,12 +1,13 @@ from django.urls import path from .resources.main import MainResource -from .resources.game import GameResource, GameSingleResource +from .resources.game import GameResource, GameSingleResource, GameEventResource app_name = "api" urlpatterns = [ + path("games//events", GameEventResource.as_view(), name="games_events"), path("games/", GameSingleResource.as_view(), name="games_single"), path("games", GameResource.as_view(), name="games"), path("", MainResource.as_view(), name="main"), diff --git a/game/models.py b/game/models.py index ecc765c..2c05314 100644 --- a/game/models.py +++ b/game/models.py @@ -72,7 +72,7 @@ class Game(models.Model): class EventTypes(EnumChoicesBase): """ Event types to generate a game timeline """ - CREATE_GAME = 0 + START_GAME = 0 PAUSE = 1 RESUME = 2 CLICK_MINE = 3 @@ -88,7 +88,7 @@ class GameEvent(models.Model): type = models.IntegerField( choices=EventTypes.choices(), - default=EventTypes.CREATE_GAME, + default=EventTypes.START_GAME, help_text="The game event", ) diff --git a/game/signals.py b/game/signals.py new file mode 100644 index 0000000..e69de29