feat(threads): add basic message thread API and web thread panel
All checks were successful
CI / test (push) Successful in 21s

This commit is contained in:
2026-03-08 13:37:53 +03:00
parent cf1a77ae76
commit c6e8b779b0
7 changed files with 145 additions and 1 deletions

View File

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