feat(chats): add role-based member management APIs
All checks were successful
CI / test (push) Successful in 32s

- add owner/admin/member permission checks

- implement member add/remove, role updates, and leave flow

- add chat title update endpoint for manageable chat types
This commit is contained in:
2026-03-08 00:04:54 +03:00
parent 16a584c6cb
commit a4d7294628
4 changed files with 246 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
from sqlalchemy import Select, select
from sqlalchemy import Select, func, select
from sqlalchemy.orm import aliased
from sqlalchemy.ext.asyncio import AsyncSession
@@ -19,6 +19,15 @@ async def add_chat_member(db: AsyncSession, *, chat_id: int, user_id: int, role:
return member
async def delete_chat_member(db: AsyncSession, member: ChatMember) -> None:
await db.delete(member)
async def count_chat_members(db: AsyncSession, *, chat_id: int) -> int:
result = await db.execute(select(func.count(ChatMember.id)).where(ChatMember.chat_id == chat_id))
return int(result.scalar_one())
def _user_chats_query(user_id: int) -> Select[tuple[Chat]]:
return (
select(Chat)