48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
# routers/skills.py (sans générateur)
|
|
from fastapi import APIRouter, HTTPException
|
|
import MySQLdb
|
|
from database import get_db_connection
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/")
|
|
def read_projects():
|
|
conn = get_db_connection()
|
|
if not conn:
|
|
raise HTTPException(status_code=503, detail="Service de base de données indisponible.")
|
|
|
|
try:
|
|
with conn.cursor(MySQLdb.cursors.DictCursor) as cursor:
|
|
sql = """
|
|
SELECT
|
|
p.id,
|
|
p.title,
|
|
p.description,
|
|
p.school,
|
|
p.nb_image,
|
|
p.image_name,
|
|
GROUP_CONCAT(DISTINCT s.name ORDER BY s.name SEPARATOR ', ') AS skills
|
|
FROM
|
|
projects p
|
|
LEFT JOIN
|
|
project_skills ps ON p.id = ps.project_id
|
|
LEFT JOIN
|
|
skills s ON ps.skill_id = s.id
|
|
GROUP BY
|
|
p.id;
|
|
"""
|
|
cursor.execute(sql)
|
|
result = cursor.fetchall()
|
|
|
|
for project in result:
|
|
if project['skills']:
|
|
project['skills'] = project['skills'].split(', ')
|
|
else:
|
|
project['skills'] = []
|
|
|
|
return {"data": result}
|
|
except MySQLdb.Error as e:
|
|
raise HTTPException(status_code=500, detail=f"Erreur lors de la requête: {e}")
|
|
finally:
|
|
conn.close() |