from fastapi import APIRouter, HTTPException, Depends, Query import src.messages as messages import src.models as models from src.database import get_session from sqlmodel import Session import src.users.service as service from src.auth.auth import get_current_user router = APIRouter(prefix='/users') @router.get('/', response_model=list[models.UserPublic]) def get_users( session: Session = Depends(get_session), user: models.User = Depends(get_current_user), names: list[str] = Query([]), emails: list[str] = Query([]), ): return service.get_all( session, names, emails, ) @router.get('/roles', response_model=list[models.ContractType]) def get_roles( user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): return service.get_roles(session) @router.get('/{id}', response_model=models.UserPublic) def get_users( id: int, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): result = service.get_one(session, id) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result @router.post('/', response_model=models.UserPublic) def create_user( user: models.UserCreate, logged_user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): return service.create_one(session, user) @router.put('/{id}', response_model=models.UserPublic) def update_user( id: int, user: models.UserUpdate, logged_user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): result = service.update_one(session, id, user) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result @router.delete('/{id}', response_model=models.UserPublic) def delete_user( id: int, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): result = service.delete_one(session, id) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result