56 lines
No EOL
1.7 KiB
Python
56 lines
No EOL
1.7 KiB
Python
from .models import ItemCreate, UserProfileBase, UserProfileID, UserProfilePrivate, UserProfilePublic, add_Item_user, all_users, is_user_exsist_get
|
||
from fastapi import APIRouter, Depends
|
||
from sqlalchemy.orm import Session
|
||
from ..config import get_session_db
|
||
from typing import Annotated
|
||
from ..auth.models import get_current_active_user
|
||
|
||
router = APIRouter(
|
||
prefix="/items",
|
||
tags=["items"],
|
||
responses={404: {"description": "Not found"}},
|
||
dependencies=[],
|
||
)
|
||
|
||
@router.get('/all_profiles')
|
||
async def get_user_profile(session: Annotated[Session, Depends(get_session_db)]) -> list[UserProfilePrivate]:
|
||
|
||
return all_users(session=session)
|
||
|
||
|
||
@router.get('/profile/{username}')
|
||
async def get_user_profile_by_username(
|
||
username: str,
|
||
session: Annotated[Session, Depends(get_session_db)],
|
||
) -> UserProfilePublic | dict:
|
||
|
||
user : UserProfilePublic = is_user_exsist_get(username, session)
|
||
if user is None:
|
||
return {"error": "User not found"}
|
||
|
||
return user
|
||
|
||
@router.get('/profile/me')
|
||
async def get_user_profile_me(
|
||
current_user: Annotated[UserProfilePrivate, Depends(get_current_active_user)],
|
||
session : Annotated[Session, Depends(get_session_db)], #dependtek kaynaklı UserPublic doner
|
||
) -> UserProfilePrivate:
|
||
|
||
return is_user_exsist_get(current_user.username, session)
|
||
|
||
|
||
@router.post('/create')
|
||
async def create_user_profile(
|
||
user : Annotated[UserProfileID, Depends(get_current_active_user)],
|
||
session: Annotated[Session, Depends(get_session_db)],
|
||
item : Annotated[ItemCreate , None] = None
|
||
) -> dict:
|
||
|
||
if add_Item_user(user, session, item) :
|
||
return {"message": "User item created successfully"}
|
||
|
||
return {"error": "User item creation failed"}
|
||
|
||
|
||
|
||
|