Spaces:
Sleeping
Sleeping
| from config.reuseable import fields, models, datetime | |
| class User(models.Model): | |
| id = fields.IntField(pk=True) | |
| email = fields.CharField(max_length=255, unique=True) | |
| username = fields.CharField(max_length=255, unique=True) | |
| password = fields.CharField(max_length=255, unique=True) | |
| current_streak = fields.IntField(default=0) | |
| longest_streak = fields.IntField(default=0) | |
| created_at = fields.DatetimeField(auto_now_add=True) | |
| challenges: fields.ReverseRelation["Challenge"] | |
| progresses: fields.ReverseRelation["Progress"] | |
| coach_sessions: fields.ReverseRelation["CoachSession"] | |
| milestones: fields.ReverseRelation["Milestone"] | |
| class Challenge(models.Model): | |
| id = fields.IntField(pk=True) | |
| user = fields.ForeignKeyField("models.User", related_name="challenges") | |
| title = fields.CharField(max_length=100) | |
| description = fields.TextField(null=True) | |
| start_date = fields.DateField() | |
| end_date = fields.DateField() | |
| is_active = fields.BooleanField(default=True) | |
| is_completed = fields.BooleanField(default=False) | |
| created_at = fields.DatetimeField(auto_now_add=True) | |
| progresses: fields.ReverseRelation["Progress"] | |
| class Progress(models.Model): | |
| id = fields.IntField(pk=True) | |
| user = fields.ForeignKeyField("models.User", related_name="progresses") | |
| challenge = fields.ForeignKeyField("models.Challenge", related_name="progresses") | |
| day = fields.IntField() | |
| note = fields.TextField(null=True) | |
| completed = fields.BooleanField(default=False) | |
| date = fields.DateField(default=datetime.utcnow) | |
| class Meta: | |
| unique_together = ("user", "challenge", "day") | |
| class Milestone(models.Model): | |
| id = fields.IntField(pk=True) | |
| user = fields.ForeignKeyField("models.User", related_name="milestones") | |
| challenge = fields.ForeignKeyField( | |
| "models.Challenge", related_name="milestones", null=True | |
| ) | |
| title = fields.CharField(max_length=100) | |
| description = fields.TextField(null=True) | |
| achieved = fields.BooleanField(default=False) | |
| date_achieved = fields.DatetimeField(null=True) | |
| class CoachSession(models.Model): | |
| id = fields.IntField(pk=True) | |
| user = fields.ForeignKeyField("models.User", related_name="coach_sessions") | |
| challenge = fields.ForeignKeyField( | |
| "models.Challenge", related_name="coach_sessions", null=True | |
| ) | |
| message_from_user = fields.TextField() | |
| response_from_ai = fields.TextField() | |
| timestamp = fields.DatetimeField(auto_now_add=True) | |