from fastapi import APIRouter, Depends from fastapi.security import OAuth2PasswordBearer from fastapi.responses import JSONResponse from fastapi.requests import Request from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse from database import engine, SessionLocal from models.user import User from schemas.user import UserCreate, UserRead router = APIRouter() @router.get("/api/users") async def read_users(db: SessionLocal = Depends()): users = db.query(User).all() return JSONResponse(status_code=200, content=[UserRead.from_orm(user) for user in users]) @router.get("/api/users/{user_id}") async def read_user(user_id: int, db: SessionLocal = Depends()): user = db.query(User).filter(User.id == user_id).first() if not user: return JSONResponse(status_code=404, content={"error": "User not found"}) return JSONResponse(status_code=200, content=UserRead.from_orm(user)) @router.put("/api/users/{user_id}") async def update_user(user_id: int, user: UserCreate, db: SessionLocal = Depends()): db_user = db.query(User).filter(User.id == user_id).first() if not db_user: return JSONResponse(status_code=404, content={"error": "User not found"}) db_user.username = user.username db_user.password = user.password db.commit() return JSONResponse(status_code=200, content={"message": "User updated successfully"})