ba-thesis/backend/main.py

69 lines
2.1 KiB
Python

"""Main entry point for the MEDWingS backend.
This module defines the API routes provided by the backend.
"""
from fastapi import Depends, FastAPI, HTTPException
from sqlalchemy.orm import Session
import backend.models.users as usermodel
import backend.schemas.users as userschema
import backend.crud.users as usercrud
from backend.database.engine import SessionLocal
app = FastAPI()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get("/hello/")
def hello():
"""Placeholder for a proper healthcheck endpoint."""
return "Hello World!"
@app.post("/users/", response_model=userschema.User)
def create_user(user: userschema.UserCreate, db: Session = Depends(get_db)):
existing_user = usercrud.read_user_by_email(db, email=user.email)
if existing_user:
raise HTTPException(status_code=400, detail="A user with this email address is already registered.")
return usercrud.create_user(db=db, user=user)
@app.get("/users/{id}", response_model=userschema.User)
def read_user(id: int, db: Session = Depends(get_db)):
user = usercrud.read_user(db=db, id=id)
if not user:
raise HTTPException(status_code=404, detail=f"No user with id '{id}' found.")
return user
@app.get("/users/", response_model=list[userschema.User])
def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
users = usercrud.read_users(db=db, skip=skip, limit=limit)
return users
@app.patch("/users/{id}", response_model=userschema.User)
def update_user(id: int, user: userschema.UserUpdate, db: Session = Depends(get_db)):
current_user = usercrud.read_user(db=db, id=id)
if not current_user:
raise HTTPException(status_code=404, detail=f"No user with id '{id}' found.")
return usercrud.update_user(db=db, user=user, id=id)
@app.delete("/users/{id}", response_model=userschema.User)
def delete_user(id: int, db: Session = Depends(get_db)):
user = usercrud.read_user(db=db, id=id)
if not user:
raise HTTPException(status_code=404, detail=f"No user with id '{id}' found.")
return usercrud.delete_user(db=db, id=id)