Initializing the GameEvent endpoint

This commit is contained in:
2020-11-06 01:16:59 -03:00
parent 2f56832def
commit 01c6b44427
6 changed files with 30 additions and 7 deletions

View File

@@ -3,7 +3,7 @@ from rest_framework.response import Response
from rest_framework.views import APIView from rest_framework.views import APIView
from game.models import Game from game.models import Game
from ..serializers import GameSerializer from ..serializers import GameSerializer, GameEventSerializer
class GameResource(APIView): class GameResource(APIView):
@@ -28,3 +28,19 @@ class GameSingleResource(APIView):
serializer = GameSerializer(game) serializer = GameSerializer(game)
return Response(serializer.data, status=status.HTTP_200_OK) 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)

View File

@@ -1,4 +1,4 @@
from .game import GameSerializer from .game import GameSerializer, GameEventSerializer
__all__ = ["GameSerializer"] __all__ = ["GameSerializer", "GameEventSerializer"]

View File

@@ -1,9 +1,15 @@
from rest_framework import serializers from rest_framework import serializers
from game.models import Game from game.models import Game, GameEvent
class GameSerializer(serializers.ModelSerializer): class GameSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Game model = Game
fields = "__all__" fields = "__all__"
class GameEventSerializer(serializers.ModelSerializer):
class Meta:
model = GameEvent
fields = "__all__"

View File

@@ -1,12 +1,13 @@
from django.urls import path from django.urls import path
from .resources.main import MainResource from .resources.main import MainResource
from .resources.game import GameResource, GameSingleResource from .resources.game import GameResource, GameSingleResource, GameEventResource
app_name = "api" app_name = "api"
urlpatterns = [ urlpatterns = [
path("games/<game_id>/events", GameEventResource.as_view(), name="games_events"),
path("games/<game_id>", GameSingleResource.as_view(), name="games_single"), path("games/<game_id>", GameSingleResource.as_view(), name="games_single"),
path("games", GameResource.as_view(), name="games"), path("games", GameResource.as_view(), name="games"),
path("", MainResource.as_view(), name="main"), path("", MainResource.as_view(), name="main"),

View File

@@ -72,7 +72,7 @@ class Game(models.Model):
class EventTypes(EnumChoicesBase): class EventTypes(EnumChoicesBase):
""" Event types to generate a game timeline """ """ Event types to generate a game timeline """
CREATE_GAME = 0 START_GAME = 0
PAUSE = 1 PAUSE = 1
RESUME = 2 RESUME = 2
CLICK_MINE = 3 CLICK_MINE = 3
@@ -88,7 +88,7 @@ class GameEvent(models.Model):
type = models.IntegerField( type = models.IntegerField(
choices=EventTypes.choices(), choices=EventTypes.choices(),
default=EventTypes.CREATE_GAME, default=EventTypes.START_GAME,
help_text="The game event", help_text="The game event",
) )

0
game/signals.py Normal file
View File