summaryrefslogtreecommitdiff
path: root/app/models/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/user.py')
-rw-r--r--app/models/user.py26
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()