Merge pull request 'dev' (#1) from dev into main

Reviewed-on: Giovanni-Josserand/Portfolio-API#1
This commit is contained in:
Giovanni-Josserand committed 2025-08-31 16:28:37 +00:00
commit 840de088aa
4 files changed
+113 -2

No files matched your search

+17 -2
View File
@@ -1,7 +1,7 @@
import os import os
from fastapi import FastAPI, HTTPException from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from routers import skills from routers import skills, experiences, experienceTasks, projects
app = FastAPI() app = FastAPI()
@@ -24,5 +24,20 @@ def read_root():
app.include_router( app.include_router(
skills.router, skills.router,
prefix="/api/skills", prefix="/api/skills",
tags=["Skills"] tags=["Skills"],
)
app.include_router(
experiences.router,
prefix="/api/experiences",
tags=["Experiences"]
)
app.include_router(
experienceTasks.router,
prefix="/api/experienceTasks",
tags=["ExperienceTasks"]
)
app.include_router(
projects.router,
prefix="/api/projects",
tags=["Projects"]
) )
+24
View File
@@ -0,0 +1,24 @@
# 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_experienceTasks():
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 * FROM experience_tasks;"
cursor.execute(sql)
result = cursor.fetchall()
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()
+24
View File
@@ -0,0 +1,24 @@
# 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_experiences():
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 * FROM experiences;"
cursor.execute(sql)
result = cursor.fetchall()
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()
+48
View File
@@ -0,0 +1,48 @@
# 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.color,
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()