ba-thesis/backend/main.py

69 lines
2.1 KiB
Python
Raw Normal View History

"""Main entry point for the MEDWingS backend.
This module defines the API routes provided by the backend.
"""
2023-05-10 17:19:38 +02:00
2023-05-12 04:59:05 +02:00
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
2023-05-12 04:59:05 +02:00
2023-05-10 17:19:38 +02:00
app = FastAPI()
2023-05-12 04:59:05 +02:00
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
2023-05-10 17:19:38 +02:00
@app.get("/hello/")
2023-05-12 04:59:05 +02:00
def hello():
"""Placeholder for a proper healthcheck endpoint."""
2023-05-10 17:19:38 +02:00
return "Hello World!"
2023-05-12 04:59:05 +02:00
@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)
2023-05-12 04:59:05 +02:00
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)
2023-05-12 04:59:05 +02:00
@app.get("/users/{id}", response_model=userschema.User)
2023-05-12 04:59:05 +02:00
def read_user(id: int, db: Session = Depends(get_db)):
user = usercrud.read_user(db=db, id=id)
2023-05-12 04:59:05 +02:00
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])
2023-05-12 04:59:05 +02:00
def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
users = usercrud.read_users(db=db, skip=skip, limit=limit)
2023-05-12 04:59:05 +02:00
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)
2023-05-12 04:59:05 +02:00
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)
2023-05-12 04:59:05 +02:00
@app.delete("/users/{id}", response_model=userschema.User)
2023-05-12 04:59:05 +02:00
def delete_user(id: int, db: Session = Depends(get_db)):
user = usercrud.read_user(db=db, id=id)
2023-05-12 04:59:05 +02:00
if not user:
raise HTTPException(status_code=404, detail=f"No user with id '{id}' found.")
return usercrud.delete_user(db=db, id=id)