From 7e41576035cd9f0004255a7490e6691c6d989ff6 Mon Sep 17 00:00:00 2001 From: tycfuvgibhoinjok Date: Tue, 31 Mar 2026 13:46:18 +0300 Subject: add jwt --- app/models/user.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'app/models/user.py') 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() -- cgit v1.3-3-g829e