From e25ab759e1f8c797d772e87290debc2c6f4e1081 Mon Sep 17 00:00:00 2001 From: Damien Degois Date: Wed, 8 Jan 2025 02:39:05 +0100 Subject: [PATCH] fix: properly cleanup messages and refs on MR closure Signed-off-by: Damien Degois --- webhook/merge_request.py | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/webhook/merge_request.py b/webhook/merge_request.py index 1ed4bff..6fda5ae 100644 --- a/webhook/merge_request.py +++ b/webhook/merge_request.py @@ -219,25 +219,31 @@ async def merge_request( ): async with await database.acquire() as connection: - for ct in conversation_tokens: - mrmsgref = convtoken_to_msgrefs[ct] - if mrmsgref.message_id is None: - continue + res = await connection.fetch( + """SELECT merge_request_message_ref_id, message_id + FROM merge_request_message_ref + WHERE merge_request_ref_id = $1""", + mri.merge_request_ref_id, + ) + for row in res: + message_id = row.get("message_id") + if message_id is not None: + await connection.execute( + """INSERT INTO msg_to_delete + (message_id, expire_at) + VALUES + ($1, now()+'30 seconds'::INTERVAL)""", + str(message_id), + ) await connection.execute( - """INSERT INTO msg_to_delete - (message_id, expire_at) - VALUES - ($1, now()+'30 seconds'::INTERVAL)""", - str(mrmsgref.message_id), + "DELETE FROM merge_request_message_ref WHERE merge_request_message_ref_id = $1", + row.get("merge_request_message_ref_id"), ) + if len(res): await connection.execute( - "DELETE FROM merge_request_message_ref WHERE merge_request_message_ref_id = $1", - mrmsgref.merge_request_message_ref_id, + "DELETE FROM merge_request_ref WHERE merge_request_ref_id = $1", + mri.merge_request_ref_id, ) - await connection.execute( - "DELETE FROM merge_request_ref WHERE merge_request_ref_id = $1", - mri.merge_request_ref_id, - ) return { "merge_request_infos": mri,