aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site')
-rw-r--r--pydis_site/apps/api/serializers.py17
-rw-r--r--pydis_site/apps/api/viewsets/bot/bumped_thread.py7
2 files changed, 18 insertions, 6 deletions
diff --git a/pydis_site/apps/api/serializers.py b/pydis_site/apps/api/serializers.py
index b9e06081..dfdda915 100644
--- a/pydis_site/apps/api/serializers.py
+++ b/pydis_site/apps/api/serializers.py
@@ -42,12 +42,29 @@ class BotSettingSerializer(ModelSerializer):
fields = ('name', 'data')
+class ListBumpedThreadSerializer(ListSerializer):
+ """Custom ListSerializer to override to_representation() when list views are triggered."""
+
+ def to_representation(self, objects: list[BumpedThread]) -> int:
+ """
+ Used by the `ListModelMixin` to return just the list of bumped thread ids.
+
+ We want to only return the thread_id attribute, hence it is unnecessary
+ to create a nested dictionary.
+
+ Additionally, this allows bumped thread routes to simply return an
+ array of thread_id ints instead of objects, saving on bandwidth.
+ """
+ return [obj.thread_id for obj in objects]
+
+
class BumpedThreadSerializer(ModelSerializer):
"""A class providing (de-)serialization of `BumpedThread` instances."""
class Meta:
"""Metadata defined for the Django REST Framework."""
+ list_serializer_class = ListBumpedThreadSerializer
model = BumpedThread
fields = ('thread_id',)
diff --git a/pydis_site/apps/api/viewsets/bot/bumped_thread.py b/pydis_site/apps/api/viewsets/bot/bumped_thread.py
index 6594ac6e..0972379b 100644
--- a/pydis_site/apps/api/viewsets/bot/bumped_thread.py
+++ b/pydis_site/apps/api/viewsets/bot/bumped_thread.py
@@ -18,12 +18,7 @@ class BumpedThreadViewSet(
Returns all BumpedThread items in the database.
#### Response format
- >>> [
- ... {
- ... 'thread_id': "941705627405811793",
- ... },
- ... ...
- ... ]
+ >>> list[int]
#### Status codes
- 200: returned on success