"""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)