58 lines
2.0 KiB
Python

Here's an example `user.py` file with CRUD endpoints for the `User` model in the `app/api/v1/routes/` directory for the `blog_app` FastAPI backend:
from typing import List
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from app.core import deps
from app.schemas.user import UserCreate, UserUpdate, User
from app.models.user import User as UserModel
router = APIRouter()
@router.post("/users", response_model=User, status_code=201)
def create_user(user_in: UserCreate, db: Session = Depends(deps.get_db)):
user = UserModel(**user_in.dict())
db.add(user)
db.commit()
db.refresh(user)
return user
@router.get("/users", response_model=List[User])
def read_users(db: Session = Depends(deps.get_db)):
users = db.query(UserModel).all()
return users
@router.get("/users/{user_id}", response_model=User)
def read_user(user_id: int, db: Session = Depends(deps.get_db)):
user = db.query(UserModel).get(user_id)
if not user:
raise HTTPException(status_code=404, detail="User not found")
return user
@router.put("/users/{user_id}", response_model=User)
def update_user(user_id: int, user_in: UserUpdate, db: Session = Depends(deps.get_db)):
user = db.query(UserModel).get(user_id)
if not user:
raise HTTPException(status_code=404, detail="User not found")
update_data = user_in.dict(exclude_unset=True)
for field, value in update_data.items():
setattr(user, field, value)
db.add(user)
db.commit()
db.refresh(user)
return user
@router.delete("/users/{user_id}", status_code=204)
def delete_user(user_id: int, db: Session = Depends(deps.get_db)):
user = db.query(UserModel).get(user_id)
if not user:
raise HTTPException(status_code=404, detail="User not found")
db.delete(user)
db.commit()
return None
This code defines CRUD (Create, Read, Update, Delete) endpoints for the `User` model using the FastAPI router. Here's a breakdown of the code:
Note that this code assumes the existence of the following components: