diff options
| author | l3wdfut4pwr <l3wdfut4pwr@gmail.com> | 2026-04-04 00:03:04 +0300 |
|---|---|---|
| committer | l3wdfut4pwr <l3wdfut4pwr@gmail.com> | 2026-04-04 00:03:04 +0300 |
| commit | 63e87a3ed84ee9e9e4a4ff329a40d2b7ce5e5d0d (patch) | |
| tree | c24731c200df3b5854a5abc14f7a5481a33d838a /app/routes | |
| parent | d835d79eb24c730ec8148415113e846a01cefd19 (diff) | |
add profile
Diffstat (limited to 'app/routes')
| -rw-r--r-- | app/routes/__init__.py | 3 | ||||
| -rw-r--r-- | app/routes/register.py | 28 | ||||
| -rw-r--r-- | app/routes/user.py | 21 |
3 files changed, 50 insertions, 2 deletions
diff --git a/app/routes/__init__.py b/app/routes/__init__.py index 383ef66..a57869a 100644 --- a/app/routes/__init__.py +++ b/app/routes/__init__.py @@ -3,10 +3,11 @@ from fastapi import APIRouter from .auth import router as auth_router from .me import router as me_router from .register import router as register_router +from .user import router as user_router router = APIRouter() router.include_router(register_router, prefix="/auth") router.include_router(auth_router, prefix="/auth") - +router.include_router(user_router) router.include_router(me_router) diff --git a/app/routes/register.py b/app/routes/register.py index ffcd336..779cf73 100644 --- a/app/routes/register.py +++ b/app/routes/register.py @@ -4,8 +4,10 @@ from typing import Optional from fastapi import APIRouter, Depends, HTTPException, Response from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select +from sqlalchemy.orm import selectinload from app.auth.jwt import create_access_token, create_refresh_token +from app.models.profile import Profile from app.models.user import User from app.schemas.user import UserCreate, UserRead from app.utils.db import get_async_session @@ -69,8 +71,32 @@ async def register_user( new_user = User(username=user.username, email=email, password=hashed_password) session.add(new_user) + await session.flush() + + new_profile = Profile(user_id=new_user.id) + session.add(new_profile) + + from app.models.integrations import UserIntegration + + new_integrations = UserIntegration(user_id=new_user.id) + session.add(new_integrations) + await session.commit() - await session.refresh(new_user) + + result = await session.execute( + select(User) + .options( + selectinload(User.profile), + selectinload(User.integrations), + ) + .where(User.id == new_user.id) + ) + new_user = result.scalars().first() + + result = await session.execute( + select(User).options(selectinload(User.profile)).where(User.id == new_user.id) + ) + new_user = result.scalars().first() logger.success( "User successfully registered | id={} username={} email={}", diff --git a/app/routes/user.py b/app/routes/user.py new file mode 100644 index 0000000..0860cc1 --- /dev/null +++ b/app/routes/user.py @@ -0,0 +1,21 @@ +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession + +from app.models.user import User +from app.schemas.user import UserRead +from app.utils.db import get_async_session + +router = APIRouter(prefix="/users", tags=["users"]) + + +@router.get("/{username}", response_model=UserRead) +async def get_user( + username: str, + session: AsyncSession = Depends(get_async_session), +): + user = await User.get_user_by_username(username, session=session) + + if not user: + raise HTTPException(status_code=404, detail="User not found") + + return user |
