user.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from typing import Optional
  2. from sqlalchemy.ext.asyncio import AsyncSession
  3. from sqlalchemy.orm import joinedload, selectinload
  4. from anonflow.database.orm import User
  5. from .base import BaseRepository
  6. class UserRepository(BaseRepository):
  7. model = User
  8. async def add(self, session: AsyncSession, user_id: int):
  9. await super()._add(
  10. session,
  11. model_args={"user_id": user_id}
  12. )
  13. async def get(self, session: AsyncSession, user_id: int) -> Optional[User]:
  14. return await super()._get(
  15. session,
  16. filters={"user_id": user_id},
  17. options=[
  18. selectinload(User.bans),
  19. joinedload(User.moderator)
  20. ]
  21. )
  22. async def has(self, session: AsyncSession, user_id: int):
  23. return await super()._has(
  24. session,
  25. filters={"user_id": user_id}
  26. )
  27. async def remove(self, session: AsyncSession, user_id: int):
  28. await super()._remove(
  29. session,
  30. filters={"user_id": user_id}
  31. )
  32. async def update(self, session: AsyncSession, user_id: int, **fields):
  33. await super()._update(
  34. session,
  35. filters={"user_id": user_id},
  36. fields=fields
  37. )