86 lines
2.7 KiB
Python
86 lines
2.7 KiB
Python
from uuid import UUID
|
|
|
|
from fastapi import Body, Depends
|
|
|
|
from auth.models import UserModel, UserInDB, UIdsInput, UserOptions, PasswordChangeModel, UserUpdateModel, \
|
|
VisualUserUpdate
|
|
from auth.repositories.AuthRepository import AuthRepository
|
|
from auth.utils import get_current_active_user
|
|
from auth.utils.mongo import get_auth_db
|
|
from core.app import app
|
|
from core.utils import to_http_res
|
|
from core.utils.router import safe_route, generate_router
|
|
from core.utils.sumery import setup_sumery_object, SumeryObject
|
|
|
|
setup_sumery_object(
|
|
SumeryObject(db=get_auth_db(),
|
|
object_name='users',
|
|
table_name='users',
|
|
value_col='name',
|
|
key_col='_id',
|
|
cols_search=['name', 'mobile']
|
|
))
|
|
|
|
router = generate_router("users", auth_dependencies=True)
|
|
|
|
_tag_base = ['users']
|
|
|
|
|
|
@router.get("/me", response_model=UserModel, tags=_tag_base)
|
|
async def read_users_me(current_user: UserModel = Depends(get_current_active_user)):
|
|
print("123")
|
|
return to_http_res(current_user, 'get')
|
|
|
|
|
|
@router.get('/query/{query}', tags=_tag_base)
|
|
async def users(query: str = None):
|
|
return await safe_route('fetch', AuthRepository.user_query, query)
|
|
|
|
|
|
@router.get("/sessions", tags=_tag_base)
|
|
async def get_my_sessions():
|
|
return await safe_route('fetch', AuthRepository.get_my_sessions)
|
|
|
|
|
|
@router.get("/{_id}", tags=_tag_base)
|
|
async def get_user_by_id_api(_id: UUID):
|
|
return await safe_route('fetch', AuthRepository.get_user, _id)
|
|
|
|
|
|
@router.put("/update-password", tags=_tag_base)
|
|
async def update_password(password: PasswordChangeModel = Body(...)):
|
|
return await safe_route('update', AuthRepository.update_password, password)
|
|
|
|
|
|
@router.put("/options", tags=_tag_base)
|
|
async def update_options(options: UserOptions = Body(...)):
|
|
return await safe_route('update', AuthRepository.update_options, options)
|
|
|
|
|
|
@router.put("/update-avatar", tags=_tag_base)
|
|
async def update_avatar(options: VisualUserUpdate = Body(...)):
|
|
return await safe_route('update', AuthRepository.update_avatar, options)
|
|
|
|
|
|
@router.put("", tags=_tag_base)
|
|
async def update_user(_input: UserUpdateModel = Body(...)):
|
|
return await safe_route('fetch', AuthRepository.update_user, _input)
|
|
|
|
|
|
@router.delete("/sessions/{_id}", tags=_tag_base)
|
|
async def delete_session(_id: UUID):
|
|
return await safe_route('fetch', AuthRepository.delete_session, _id)
|
|
|
|
|
|
@router.post("/create", tags=_tag_base)
|
|
async def create_user(_input: UserInDB = Body(...)):
|
|
return await safe_route('create', AuthRepository.create, _input)
|
|
|
|
|
|
@router.post('', tags=_tag_base)
|
|
async def users(body: UIdsInput = Body(...)):
|
|
return await safe_route('fetch', AuthRepository.get_users_by_id, body)
|
|
|
|
|
|
app.include_router(router)
|