diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/models.py | 0 | ||||
| -rw-r--r-- | app/models/user.py | 26 |
2 files changed, 26 insertions, 0 deletions
diff --git a/app/models/models.py b/app/models/models.py deleted file mode 100644 index e69de29..0000000 --- a/app/models/models.py +++ /dev/null diff --git a/app/models/user.py b/app/models/user.py index de9fa98..76ba3f9 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -1,6 +1,11 @@ +from fastapi import Depends from sqlalchemy import Boolean, Integer, String +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.future import select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column +from app.utils.db import get_async_session + class Base(DeclarativeBase): pass @@ -21,3 +26,24 @@ class User(Base): premium: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) is_banned: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) is_moderator: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) + + @classmethod + async def get_user_by_email( + cls, email: str, session: AsyncSession = Depends(get_async_session) + ): + result = await session.execute(select(cls).where(cls.email == email)) + return result.scalars().first() + + @classmethod + async def get_user_by_username( + cls, username: str, session: AsyncSession = Depends(get_async_session) + ): + result = await session.execute(select(cls).where(cls.username == username)) + return result.scalars().first() + + @classmethod + async def get_user_by_id( + cls, user_id: int, session: AsyncSession = Depends(get_async_session) + ): + result = await session.execute(select(cls).where(cls.id == user_id)) + return result.scalars().first() |
