36 lines
943 B
Python
36 lines
943 B
Python
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from domains.groups.models import Group, GroupMember
|
|
|
|
async def create_group(db: AsyncSession, group: Group):
|
|
db.add(group)
|
|
await db.commit()
|
|
await db.refresh(group)
|
|
return group
|
|
|
|
|
|
async def get_group_by_id(db: AsyncSession, group_id):
|
|
result = await db.execute(
|
|
select(Group).where(Group.id == group_id)
|
|
)
|
|
return result.scalar_one_or_none()
|
|
|
|
async def add_group_member(db: AsyncSession, membership: GroupMember):
|
|
db.add(membership)
|
|
await db.commit()
|
|
return membership
|
|
|
|
|
|
async def get_user_groups(db: AsyncSession, user_id):
|
|
result = await db.execute(
|
|
select(Group)
|
|
.join(GroupMember)
|
|
.where(GroupMember.user_id == user_id)
|
|
)
|
|
return result.scalars().all()
|
|
|
|
|
|
async def get_all_groups(db: AsyncSession):
|
|
result = await db.execute(select(Group))
|
|
return result.scalars().all() |