diff --git a/gameserver/admin.py b/gameserver/admin.py index 8c38f3f..4a31e61 100644 --- a/gameserver/admin.py +++ b/gameserver/admin.py @@ -1,3 +1,11 @@ from django.contrib import admin -# Register your models here. +from .models import Game, Player, Mod, Server + +admin.site.register(Game) + +admin.site.register(Server) + +admin.site.register(Player) + +admin.site.register(Mod) diff --git a/gameserver/migrations/0003_game_command_line_mod_command_line_and_more.py b/gameserver/migrations/0003_game_command_line_mod_command_line_and_more.py new file mode 100644 index 0000000..a70cf71 --- /dev/null +++ b/gameserver/migrations/0003_game_command_line_mod_command_line_and_more.py @@ -0,0 +1,134 @@ +# Generated by Django 5.1.4 on 2024-12-20 09:39 + +import django.db.models.deletion +import django.utils.timezone +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("gameserver", "0002_remove_game_command_line_remove_mod_command_line"), + ] + + operations = [ + migrations.AddField( + model_name="game", + name="command_line", + field=models.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name="mod", + name="command_line", + field=models.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name="server", + name="current_players", + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name="server", + name="is_private", + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name="server", + name="is_started", + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name="server", + name="last_collection_utc", + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name="server", + name="last_heartbeat_utc", + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name="server", + name="maximum_players", + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name="server", + name="process_id", + field=models.IntegerField(null=True), + ), + migrations.AddField( + model_name="server", + name="spawned_at_utc", + field=models.DateTimeField( + auto_now_add=True, default=django.utils.timezone.now + ), + preserve_default=False, + ), + migrations.AlterField( + model_name="player", + name="score", + field=models.IntegerField(default=0), + ), + migrations.AlterField( + model_name="server", + name="port", + field=models.IntegerField(default=69), + ), + migrations.CreateModel( + name="SpawnedServerInfo", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("process_id", models.IntegerField()), + ("port", models.IntegerField()), + ( + "mod", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="gameserver.mod" + ), + ), + ], + ), + migrations.CreateModel( + name="State", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("created_at_utc", models.DateTimeField(auto_now_add=True)), + ("playtime", models.DurationField(default="00:00:00")), + ("servers", models.ManyToManyField(to="gameserver.server")), + ], + ), + migrations.CreateModel( + name="StateResponse", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("man_minutes_played", models.IntegerField()), + ("running_since_utc", models.DateTimeField()), + ("servers", models.ManyToManyField(to="gameserver.server")), + ], + ), + ] diff --git a/gameserver/migrations/0004_game_description_server_container_id.py b/gameserver/migrations/0004_game_description_server_container_id.py new file mode 100644 index 0000000..293f03a --- /dev/null +++ b/gameserver/migrations/0004_game_description_server_container_id.py @@ -0,0 +1,23 @@ +# Generated by Django 5.1.4 on 2024-12-20 10:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("gameserver", "0003_game_command_line_mod_command_line_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="game", + name="description", + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name="server", + name="container_id", + field=models.CharField(blank=True, max_length=255, null=True), + ), + ] diff --git a/gameserver/models.py b/gameserver/models.py index fa5ba01..19ff916 100644 --- a/gameserver/models.py +++ b/gameserver/models.py @@ -4,7 +4,8 @@ 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) + command_line = models.CharField(max_length=255, null=True, blank=True) + description = models.TextField(null=True, blank=True) def __str__(self): return self.friendly_name @@ -16,40 +17,41 @@ class Server(models.Model): 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() + spawned_at_utc = models.DateTimeField(auto_now_add=True) + last_collection_utc = models.DateTimeField(null=True, blank=True) + last_heartbeat_utc = models.DateTimeField(null=True, blank=True) + process_id = models.IntegerField(null=True) + port = models.IntegerField(default=69) + is_started = models.BooleanField(default=False) + is_private = models.BooleanField(default=False) + current_players = models.IntegerField(default=0) + maximum_players = models.IntegerField(default=0) + container_id = models.CharField(max_length=255, null=True, blank=True) class Player(models.Model): name = models.CharField(max_length=255) - score = models.IntegerField() + score = models.IntegerField(default=0) class Mod(models.Model): name = models.CharField(max_length=255) friendly_name = models.CharField(max_length=255) - # command_line = models.CharField(max_length=255) + command_line = models.CharField(max_length=255, null=True, blank=True) -# class SpawnedServerInfo(models.Model): -# process_id = models.IntegerField() -# port = models.IntegerField() -# mod = models.ForeignKey('Mod', on_delete=models.CASCADE) +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 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') +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 + def increase_playtime(self, time_to_add): + self.playtime += time_to_add \ No newline at end of file