Commit 011fc099 authored by Luna's avatar Luna 📟

users: add debug get mentions endpoint

This doesn't seem to work on the offical client, gives a crash.

 - schemas: add GET_MENTIONS
parent a0a1f24c
Pipeline #37323773 passed with stage
in 6 minutes and 3 seconds
......@@ -5,7 +5,7 @@ from quart import Blueprint, jsonify, request, current_app as app
from ..auth import token_check
from ..errors import Forbidden, BadRequest
from ..schemas import validate, USER_UPDATE
from ..schemas import validate, USER_UPDATE, GET_MENTIONS
from .guilds import guild_check
from .auth import check_password
......@@ -370,3 +370,49 @@ async def get_profile(peer_id: int):
'premium_since': peer_premium,
'mutual_guilds': mutual_res,
})
@bp.route('/@me/mentions', methods=['GET'])
async def _get_mentions():
user_id = await token_check()
j = validate(dict(request.args), GET_MENTIONS)
print('args', j)
guild_query = 'AND guild_id = $2' if 'guild_id' in j else ''
role_query = "OR content LIKE '%<@&%'" if j['roles'] else ''
everyone_query = "OR content LIKE '%@everyone%'" if j['everyone'] else ''
mention_user = f'<@{user_id}>'
args = [mention_user]
if guild_query:
args.append(j['guild_id'])
rows = await app.db.fetch(f"""
SELECT id
FROM messages
WHERE (
content LIKE '%'||$1||'%'
{role_query}
{everyone_query}
{guild_query}
)
LIMIT {j["limit"]}
""", *args)
res = []
for row in rows:
message = await app.storage.get_message(row['id'])
chan = await app.storage.get_channel(int(message['channel_id']))
if not chan:
print('ignore wee woo')
continue
res.append(
message
)
print(res)
return jsonify(res)
......@@ -598,3 +598,11 @@ SEARCH_CHANNEL = {
'include_nsfw': {'coerce': bool, 'default': False},
'offset': {'coerce': int, 'default': 0}
}
GET_MENTIONS = {
'limit': {'coerce': int, 'default': 25},
'roles': {'coerce': bool, 'default': True},
'everyone': {'coerce': bool, 'default': True},
'guild_id': {'coerce': int, 'required': False}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment