feat(threads): support nested replies in thread API and panel
All checks were successful
CI / test (push) Successful in 31s

This commit is contained in:
2026-03-08 13:40:42 +03:00
parent 88ff11c130
commit 5d69d53301
5 changed files with 81 additions and 5 deletions

View File

@@ -152,6 +152,34 @@ async def list_message_thread(
return list(result.scalars().all())
async def list_messages_by_parent_ids(
db: AsyncSession,
*,
chat_id: int,
user_id: int,
parent_ids: list[int],
limit: int = 200,
) -> list[Message]:
if not parent_ids:
return []
stmt = (
select(Message)
.outerjoin(
MessageHidden,
(MessageHidden.message_id == Message.id) & (MessageHidden.user_id == user_id),
)
.where(
Message.chat_id == chat_id,
MessageHidden.id.is_(None),
Message.reply_to_message_id.in_(parent_ids),
)
.order_by(Message.id.asc())
.limit(max(1, min(limit, 500)))
)
result = await db.execute(stmt)
return list(result.scalars().all())
async def delete_message(db: AsyncSession, message: Message) -> None:
await db.delete(message)