Edb83 / breaking-the-silence

1 stars 1 forks source link

Get initial schema in place #20

Closed Edb83 closed 1 year ago

Edb83 commented 1 year ago

Likely models:

Edb83 commented 1 year ago
class Request(models.Model):
    sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sent_requests')
    receiver = models.ForeignKey(User, on_delete=models.CASCADE, related_name='received_requests')
    created_at = models.DateTimeField(auto_now_add=True)
    accepted = models.BooleanField(default=False)

class DirectMessage(models.Model):
    sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sent_messages')
    receiver = models.ForeignKey(User, on_delete=models.CASCADE, related_name='received_messages')
    message = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
Edb83 commented 1 year ago

class Topic(models.Model):
    name = models.CharField(max_length=255)

class Thread(models.Model):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE, related_name='threads')
    title = models.CharField(max_length=255)
    body = models.TextField() #  maybe Summernote?
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='threads')
    created_at = models.DateTimeField(auto_now_add=True)

class Message(models.Model):
    thread = models.ForeignKey(Thread, on_delete=models.CASCADE, related_name='messages')
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='messages')
    message = models.TextField() # maybe Summernote?
    parent_message = models.ForeignKey('self', on_delete=models.CASCADE, related_name='child_messages', null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)

class Response(models.Model):
    message = models.ForeignKey(Message, on_delete=models.CASCADE, related_name='responses')
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='responses')
    response = models.TextField() # maybe Summernote?
    parent_response = models.ForeignKey('self', on_delete=models.CASCADE, related_name='child_responses', null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)```