|
| 1 | +from djongo import models |
| 2 | + |
| 3 | +class Team(models.Model): |
| 4 | + name = models.CharField(max_length=100, unique=True) |
| 5 | + class Meta: |
| 6 | + db_table = 'teams' |
| 7 | + def __str__(self): |
| 8 | + return self.name |
| 9 | + |
| 10 | +class User(models.Model): |
| 11 | + name = models.CharField(max_length=100) |
| 12 | + email = models.EmailField(unique=True) |
| 13 | + team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='members') |
| 14 | + class Meta: |
| 15 | + db_table = 'users' |
| 16 | + def __str__(self): |
| 17 | + return self.name |
| 18 | + |
| 19 | +class Activity(models.Model): |
| 20 | + user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='activities') |
| 21 | + type = models.CharField(max_length=50) |
| 22 | + duration = models.IntegerField() # minutes |
| 23 | + timestamp = models.DateTimeField(auto_now_add=True) |
| 24 | + class Meta: |
| 25 | + db_table = 'activities' |
| 26 | + def __str__(self): |
| 27 | + return f"{self.type} - {self.user.name}" |
| 28 | + |
| 29 | +class Workout(models.Model): |
| 30 | + name = models.CharField(max_length=100) |
| 31 | + description = models.TextField() |
| 32 | + suggested_for = models.ManyToManyField(User, related_name='suggested_workouts') |
| 33 | + class Meta: |
| 34 | + db_table = 'workouts' |
| 35 | + def __str__(self): |
| 36 | + return self.name |
| 37 | + |
| 38 | +class Leaderboard(models.Model): |
| 39 | + team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='leaderboard') |
| 40 | + points = models.IntegerField(default=0) |
| 41 | + class Meta: |
| 42 | + db_table = 'leaderboard' |
| 43 | + def __str__(self): |
| 44 | + return f"{self.team.name}: {self.points} pts" |
0 commit comments