diff options
| author | tycfuvgibhoinjok <aneuhmanh@gmail.com> | 2026-03-31 13:46:18 +0300 |
|---|---|---|
| committer | tycfuvgibhoinjok <aneuhmanh@gmail.com> | 2026-03-31 13:46:18 +0300 |
| commit | 7e41576035cd9f0004255a7490e6691c6d989ff6 (patch) | |
| tree | 4d78369f54b32c9f72bcc137b41f1cc0172f30fc /app/models/user.py | |
| parent | 051f562c6ceafe8f25e10548bd8f5543839794e5 (diff) | |
add jwt
Diffstat (limited to 'app/models/user.py')
| -rw-r--r-- | app/models/user.py | 26 |
1 files changed, 26 insertions, 0 deletions
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() |
