aboutsummaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorGravatar Johannes Christ <[email protected]>2018-11-18 21:03:06 +0100
committerGravatar Johannes Christ <[email protected]>2018-11-18 21:03:06 +0100
commit9e9fde3fa4a159e3883760c5ca9fe51b4d6593de (patch)
tree952b0ae3c51a884aaeb32672b9a6bfd68caafb1d /api
parentSet up markdown & Dockerfile lints. (diff)
Add the abstract `Message` model.
Diffstat (limited to 'api')
-rw-r--r--api/models.py31
-rw-r--r--api/tests/test_models.py12
2 files changed, 42 insertions, 1 deletions
diff --git a/api/models.py b/api/models.py
index 9990e266..3ba0ac5c 100644
--- a/api/models.py
+++ b/api/models.py
@@ -210,6 +210,37 @@ class Member(ModelReprMixin, models.Model):
return f"{self.name}#{self.discriminator}"
+class Message(ModelReprMixin, models.Model):
+ id = models.BigIntegerField(
+ primary_key=True,
+ help_text="The message ID as taken from Discord.",
+ validators=(
+ MinValueValidator(
+ limit_value=0,
+ message="Message IDs cannot be negative."
+ ),
+ )
+ )
+ author = models.ForeignKey(
+ Member,
+ on_delete=models.CASCADE,
+ help_text="The author of this message."
+ )
+ content = models.CharField(
+ max_length=2_000,
+ help_text="The content of this message, taken from Discord."
+ )
+ embeds = pgfields.ArrayField(
+ pgfields.JSONField(
+ validators=(validate_tag_embed,)
+ ),
+ help_text="Embeds attached to this message."
+ )
+
+ class Meta:
+ abstract = True
+
+
class Tag(ModelReprMixin, models.Model):
"""A tag providing (hopefully) useful information."""
diff --git a/api/tests/test_models.py b/api/tests/test_models.py
index 91db2def..1e4af806 100644
--- a/api/tests/test_models.py
+++ b/api/tests/test_models.py
@@ -1,7 +1,8 @@
from django.test import SimpleTestCase
from ..models import (
- DocumentationLink, Member, ModelReprMixin,
+ DocumentationLink, Member,
+ Message, ModelReprMixin,
OffTopicChannelName, Role,
SnakeFact, SnakeIdiom,
SnakeName, SpecialSnake,
@@ -41,6 +42,15 @@ class StringDunderMethodTests(SimpleTestCase):
id=5, name='test role',
colour=0x5, permissions=0
),
+ Message(
+ id=45,
+ author=Member(
+ id=444, name='bill',
+ discriminator=5, avatar_hash=None
+ ),
+ content="wooey",
+ embeds=[]
+ ),
Member(
id=5, name='bob',
discriminator=1, avatar_hash=None