diff --git a/db/models.py b/db/models.py index 137941ffa..c154b86db 100644 --- a/db/models.py +++ b/db/models.py @@ -1 +1,40 @@ from django.db import models + + +class Race(models.Model): + name = models.CharField(max_length=255, unique=True) + description = models.TextField(blank=True) + + +class Skill(models.Model): + name = models.CharField(max_length=255, unique=True) + bonus = models.CharField(max_length=255) + race = models.ForeignKey( + Race, + on_delete=models.CASCADE, + related_name="skills" + ) + + +class Guild(models.Model): + name = models.CharField(max_length=255, unique=True) + description = models.TextField(null=True, blank=True) + + +class Player(models.Model): + nickname = models.CharField(max_length=255, unique=True) + email = models.EmailField(max_length=255) + bio = models.CharField(max_length=255) + race = models.ForeignKey( + Race, + on_delete=models.CASCADE, + related_name="players" + ) + guild = models.ForeignKey( + Guild, + on_delete=models.SET_NULL, + null=True, + blank=True, + related_name="members" + ) + created_at = models.DateTimeField(auto_now_add=True) diff --git a/main.py b/main.py index e71f55d89..f1e0af9a7 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,43 @@ import init_django_orm # noqa: F401 - +import json from db.models import Race, Skill, Player, Guild def main() -> None: - pass + with open("players.json", "r") as f: + players = json.load(f) + + for nickname, data in players.items(): + race_data = data.get("race", {}) + race, _ = Race.objects.get_or_create( + name=race_data.get("name"), + defaults={"description": race_data.get("description", "")} + ) + + for skill_data in race_data.get("skills", []): + Skill.objects.get_or_create( + name=skill_data.get("name"), + race=race, + defaults={"bonus": skill_data.get("bonus")} + ) + + guild = None + guild_data = data.get("guild") + if guild_data: + guild, _ = Guild.objects.get_or_create( + name=guild_data.get("name"), + defaults={"description": guild_data.get("description")} + ) + + Player.objects.get_or_create( + nickname=nickname, + defaults={ + "email": data.get("email"), + "bio": data.get("bio"), + "race": race, + "guild": guild, + } + ) if __name__ == "__main__":