diff --git a/gameserver/migrations/0001_initial.py b/gameserver/migrations/0001_initial.py new file mode 100644 index 0000000..45a1990 --- /dev/null +++ b/gameserver/migrations/0001_initial.py @@ -0,0 +1,94 @@ +# Generated by Django 5.1.4 on 2024-12-20 09:11 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Game", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=255)), + ("friendly_name", models.CharField(max_length=255)), + ("command_line", models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name="Mod", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=255)), + ("friendly_name", models.CharField(max_length=255)), + ("command_line", models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name="Player", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=255)), + ("score", models.IntegerField()), + ], + ), + migrations.CreateModel( + name="Server", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("port", models.IntegerField()), + ("game_type", models.CharField(max_length=255)), + ( + "game", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="gameserver.game", + ), + ), + ( + "mod", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="gameserver.mod" + ), + ), + ("players", models.ManyToManyField(to="gameserver.player")), + ], + ), + ] diff --git a/gameserver/migrations/0002_remove_game_command_line_remove_mod_command_line.py b/gameserver/migrations/0002_remove_game_command_line_remove_mod_command_line.py new file mode 100644 index 0000000..e2b14d0 --- /dev/null +++ b/gameserver/migrations/0002_remove_game_command_line_remove_mod_command_line.py @@ -0,0 +1,21 @@ +# Generated by Django 5.1.4 on 2024-12-20 09:30 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("gameserver", "0001_initial"), + ] + + operations = [ + migrations.RemoveField( + model_name="game", + name="command_line", + ), + migrations.RemoveField( + model_name="mod", + name="command_line", + ), + ] diff --git a/gameserver/models.py b/gameserver/models.py index 8dd890d..fa5ba01 100644 --- a/gameserver/models.py +++ b/gameserver/models.py @@ -1,8 +1,55 @@ from django.db import models + +class Game(models.Model): + name = models.CharField(max_length=255) + friendly_name = models.CharField(max_length=255) + # command_line = models.CharField(max_length=255) + + def __str__(self): + return self.friendly_name + + class Server(models.Model): - pass -class Player(model.Model): - pass -class StatisticsResponse(models.Model): - pass \ No newline at end of file + game = models.ForeignKey(Game, on_delete=models.CASCADE) + port = models.IntegerField() + game_type = models.CharField(max_length=255) + mod = models.ForeignKey('Mod', on_delete=models.CASCADE) + players = models.ManyToManyField('Player') +# spawned_at_utc = models.DateTimeField(auto_now_add=True) +# last_collection_utc = models.DateTimeField(null=True, blank=True) +# last_heartbeat_utc = models.DateTimeField() +# process_id = models.IntegerField() +# port = models.IntegerField() +# is_started = models.BooleanField() +# is_private = models.BooleanField() +# current_players = models.IntegerField() +# maximum_players = models.IntegerField() + + +class Player(models.Model): + name = models.CharField(max_length=255) + score = models.IntegerField() + +class Mod(models.Model): + name = models.CharField(max_length=255) + friendly_name = models.CharField(max_length=255) + # command_line = models.CharField(max_length=255) + +# class SpawnedServerInfo(models.Model): +# process_id = models.IntegerField() +# port = models.IntegerField() +# mod = models.ForeignKey('Mod', on_delete=models.CASCADE) + +# class StateResponse(models.Model): +# servers = models.ManyToManyField('Server') +# man_minutes_played = models.IntegerField() +# running_since_utc = models.DateTimeField() + +# class State(models.Model): +# servers = models.ManyToManyField('Server') +# created_at_utc = models.DateTimeField(auto_now_add=True) +# playtime = models.DurationField(default='00:00:00') + +# def increase_playtime(self, time_to_add): +# self.playtime += time_to_add \ No newline at end of file diff --git a/gameserver/urls.py b/gameserver/urls.py new file mode 100644 index 0000000..acdb237 --- /dev/null +++ b/gameserver/urls.py @@ -0,0 +1,8 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path("", views.index, name="index"), +] + diff --git a/gameserver/views.py b/gameserver/views.py index 2536b37..430f8d5 100644 --- a/gameserver/views.py +++ b/gameserver/views.py @@ -1 +1,6 @@ from django.shortcuts import render +from django.http import HttpResponse + + +def index(request): + return HttpResponse("Hello, world. You're at the GibCasa index.") \ No newline at end of file diff --git a/gibcasa/settings.py b/gibcasa/settings.py index b441c64..db9e293 100644 --- a/gibcasa/settings.py +++ b/gibcasa/settings.py @@ -31,7 +31,7 @@ ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ - "gameserver", + "gameserver.apps.GameserverConfig", "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", diff --git a/gibcasa/urls.py b/gibcasa/urls.py index 93bf91d..c85f0d5 100644 --- a/gibcasa/urls.py +++ b/gibcasa/urls.py @@ -2,6 +2,7 @@ from django.contrib import admin from django.urls import include, path urlpatterns = [ + path("gameserver/", include("gameserver.urls")), path("admin/", admin.site.urls), ]