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)