aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--postgres/init.sql28
-rw-r--r--pydis_site/apps/api/viewsets/bot/user.py29
2 files changed, 8 insertions, 49 deletions
diff --git a/postgres/init.sql b/postgres/init.sql
index 45ad440c..922ce1ad 100644
--- a/postgres/init.sql
+++ b/postgres/init.sql
@@ -3,39 +3,19 @@ CREATE DATABASE metricity;
\c metricity;
CREATE TABLE users (
- id varchar(255),
- name varchar(255) not null,
- avatar_hash varchar(255),
- joined_at timestamp not null,
- created_at timestamp not null,
- is_staff boolean not null,
- opt_out boolean default false,
- bot boolean default false,
- is_guild boolean default true,
- is_verified boolean default false,
- public_flags text default '{}',
+ id varchar,
verified_at timestamp,
primary key(id)
);
INSERT INTO users VALUES (
0,
- 'foo',
- 'bar',
- current_timestamp,
- current_timestamp,
- false,
- false,
- false,
- true,
- false,
- '{}',
- NULL
+ current_timestamp
);
CREATE TABLE messages (
- id varchar(255),
- author_id varchar(255) references users(id),
+ id varchar,
+ author_id varchar references users(id),
primary key(id)
);
diff --git a/pydis_site/apps/api/viewsets/bot/user.py b/pydis_site/apps/api/viewsets/bot/user.py
index b3d880cc..1b1af841 100644
--- a/pydis_site/apps/api/viewsets/bot/user.py
+++ b/pydis_site/apps/api/viewsets/bot/user.py
@@ -1,5 +1,3 @@
-import json
-
from django.db import connections
from rest_framework import status
from rest_framework.decorators import action
@@ -65,18 +63,7 @@ class UserViewSet(BulkCreateModelMixin, ModelViewSet):
#### Response format
>>> {
- ... "id": "0",
- ... "name": "foo",
- ... "avatar_hash": "bar",
- ... "joined_at": "2020-10-06T18:17:30.101677",
- ... "created_at": "2020-10-06T18:17:30.101677",
- ... "is_staff": False,
- ... "opt_out": False,
- ... "bot": False,
- ... "is_guild": True,
- ... "is_verified": False,
- ... "public_flags": {},
- ... "verified_at": None,
+ ... "verified_at": "2020-10-06T21:54:23.540766",
... "total_messages": 2
...}
@@ -155,18 +142,10 @@ class UserViewSet(BulkCreateModelMixin, ModelViewSet):
def metricity_data(self, request: Request, pk: str = None) -> Response:
"""Request handler for metricity_data endpoint."""
user = self.get_object()
- column_keys = ["id", "name", "avatar_hash", "joined_at", "created_at", "is_staff",
- "opt_out", "bot", "is_guild", "is_verified", "public_flags", "verified_at"]
with connections['metricity'].cursor() as cursor:
- # Get user data
- query = f"SELECT {','.join(column_keys)} FROM users WHERE id = '%s'"
- cursor.execute(query, [user.id])
- values = cursor.fetchone()
- data = dict(zip(column_keys, values))
- data["public_flags"] = json.loads(data["public_flags"])
-
- # Get message count
+ data = {}
+ cursor.execute("SELECT verified_at FROM users WHERE id = '%s'", [user.id])
+ data["verified_at"], = cursor.fetchone()
cursor.execute("SELECT COUNT(*) FROM messages WHERE author_id = '%s'", [user.id])
data["total_messages"], = cursor.fetchone()
-
return Response(data, status=status.HTTP_200_OK)