diff --git a/database.py b/database.py index 1a78c13..a674b6f 100644 --- a/database.py +++ b/database.py @@ -1,11 +1,12 @@ +# database.py import os import MySQLdb -from fastapi import HTTPException from dotenv import load_dotenv load_dotenv() def get_db_connection(): + conn = None try: conn = MySQLdb.connect( user=os.getenv("DB_USER"), @@ -13,9 +14,11 @@ def get_db_connection(): host=os.getenv("DB_HOST"), db=os.getenv("DB_NAME"), charset='utf8mb4', - cursorclass=MySQLdb.cursors.DictCursor + cursorclass=MySQLdb.cursors.DictCursor ) - return conn + yield conn except MySQLdb.Error as e: - print(f"Erreur de connexion à la base de données : {e}") - raise HTTPException(status_code=500, detail="Erreur interne du serveur lors de la connexion à la base de données.") \ No newline at end of file + print(f"Erreur de base de données : {e}") + finally: + if conn: + conn.close() \ No newline at end of file diff --git a/routers/skills.py b/routers/skills.py index 0157fd3..fca89cb 100644 --- a/routers/skills.py +++ b/routers/skills.py @@ -1,12 +1,14 @@ -from fastapi import APIRouter, HTTPException +from fastapi import APIRouter, HTTPException, Depends import MySQLdb from database import get_db_connection router = APIRouter() @router.get("/") -def read_skills(): - conn = get_db_connection() +def read_skills(conn = Depends(get_db_connection)): + if not conn: + raise HTTPException(status_code=503, detail="Service de base de données indisponible.") + try: with conn.cursor() as cursor: sql = "SELECT * FROM skills;" @@ -14,6 +16,4 @@ def read_skills(): result = cursor.fetchall() return {"data": result} except MySQLdb.Error as e: - raise HTTPException(status_code=500, detail=f"Erreur base de données: {e}") - finally: - conn.close() \ No newline at end of file + raise HTTPException(status_code=500, detail=f"Erreur lors de la requête: {e}") \ No newline at end of file