guilds, channels: fix search

This commit is contained in:
Luna 2018-11-30 17:43:51 -03:00
parent df382a7a5f
commit eec5d2eb92
2 changed files with 12 additions and 8 deletions

View File

@ -502,11 +502,11 @@ async def _search_channel(channel_id):
# main message ids # main message ids
rows = await app.db.fetch(f""" rows = await app.db.fetch(f"""
SELECT message_id, SELECT messages.id,
COUNT(*) OVER() as total_results COUNT(*) OVER() as total_results
FROM messages FROM messages
WHERE channel_id = $1 AND content LIKE '%'||$3||'%' WHERE channel_id = $1 AND content LIKE '%'||$3||'%'
ORDER BY ORDER BY messages.id DESC
LIMIT 50 LIMIT 50
OFFSET $2 OFFSET $2
""", channel_id, j['offset'], j['content']) """, channel_id, j['offset'], j['content'])
@ -521,7 +521,9 @@ async def _search_channel(channel_id):
res = [] res = []
for message_id in main_messages: for message_id in main_messages:
res.append([await app.storage.get_message(message_id)]) msg = await app.storage.get_message(message_id)
msg['hit'] = True
res.append([msg])
return jsonify({ return jsonify({
'total_results': results, 'total_results': results,

View File

@ -286,23 +286,23 @@ async def search_messages(guild_id):
user_id = await token_check() user_id = await token_check()
await guild_check(user_id, guild_id) await guild_check(user_id, guild_id)
j = validate(request.args, SEARCH_CHANNEL) j = validate(dict(request.args), SEARCH_CHANNEL)
# main message ids # main message ids
# TODO: filter only channels where user can # TODO: filter only channels where user can
# read messages to prevent leaking # read messages to prevent leaking
rows = await app.db.fetch(f""" rows = await app.db.fetch(f"""
SELECT message_id, SELECT messages.id,
COUNT(*) OVER() as total_results COUNT(*) OVER() as total_results
FROM messages FROM messages
WHERE guild_id = $1 WHERE guild_id = $1
ORDER BY ORDER BY messages.id DESC
LIMIT 50 LIMIT 50
OFFSET $2 OFFSET $2
""", guild_id, j['offset']) """, guild_id, j['offset'])
results = 0 if not rows else rows[0]['total_results'] results = 0 if not rows else rows[0]['total_results']
main_messages = [r['message_id'] for r in rows] main_messages = [r['id'] for r in rows]
# fetch contexts for each message # fetch contexts for each message
# (2 messages before, 2 messages after). # (2 messages before, 2 messages after).
@ -311,7 +311,9 @@ async def search_messages(guild_id):
res = [] res = []
for message_id in main_messages: for message_id in main_messages:
res.append([await app.storage.get_message(message_id)]) msg = await app.storage.get_message(message_id)
msg['hit'] = True
res.append([msg])
return jsonify({ return jsonify({
'total_results': results, 'total_results': results,