From 2c68620c668e075da6c28cea06694c2c3e75eb97 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Tue, 2 Sep 2025 22:59:56 +0200 Subject: [PATCH 1/4] add of school attribute in projects --- routers/projects.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/projects.py b/routers/projects.py index 00c7d05..9c668ae 100644 --- a/routers/projects.py +++ b/routers/projects.py @@ -19,7 +19,7 @@ def read_projects(): p.id, p.title, p.description, - p.color, + p.school, p.nb_image, p.image_name, GROUP_CONCAT(DISTINCT s.name ORDER BY s.name SEPARATOR ', ') AS skills From 0d2e1374edfb453bca5b2d02605ee489bb9b4b15 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Wed, 3 Sep 2025 14:31:04 +0200 Subject: [PATCH 2/4] add of longProjects and update of projects table --- main.py | 13 ++++-- routers/longProjects.py | 49 +++++++++++++++++++++++ routers/{projects.py => shortProjects.py} | 5 +-- 3 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 routers/longProjects.py rename routers/{projects.py => shortProjects.py} (93%) diff --git a/main.py b/main.py index d200679..8fbc98f 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,7 @@ import os from fastapi import FastAPI, HTTPException from fastapi.middleware.cors import CORSMiddleware -from routers import skills, experiences, experienceTasks, projects +from routers import skills, experiences, experienceTasks, shortProjects, longProjects app = FastAPI() @@ -37,7 +37,12 @@ app.include_router( tags=["ExperienceTasks"] ) app.include_router( - projects.router, - prefix="/api/projects", - tags=["Projects"] + shortProjects.router, + prefix="/api/shortProjects", + tags=["ShortProjects"] +) +app.include_router( + longProjects.router, + prefix="/api/longProjects", + tags=["LongProjects"] ) \ No newline at end of file diff --git a/routers/longProjects.py b/routers/longProjects.py new file mode 100644 index 0000000..69adca5 --- /dev/null +++ b/routers/longProjects.py @@ -0,0 +1,49 @@ +from fastapi import APIRouter, HTTPException +import MySQLdb +from database import get_db_connection + +router = APIRouter() + + +@router.get("/") +def read_longProjects(): + 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.long_description, + p.school, + p.date, + p.repo_link, + 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() \ No newline at end of file diff --git a/routers/projects.py b/routers/shortProjects.py similarity index 93% rename from routers/projects.py rename to routers/shortProjects.py index 9c668ae..16da9bb 100644 --- a/routers/projects.py +++ b/routers/shortProjects.py @@ -1,4 +1,3 @@ -# routers/skills.py (sans générateur) from fastapi import APIRouter, HTTPException import MySQLdb from database import get_db_connection @@ -7,7 +6,7 @@ router = APIRouter() @router.get("/") -def read_projects(): +def read_shortProjects(): conn = get_db_connection() if not conn: raise HTTPException(status_code=503, detail="Service de base de données indisponible.") @@ -18,7 +17,7 @@ def read_projects(): SELECT p.id, p.title, - p.description, + p.short_description, p.school, p.nb_image, p.image_name, From e97d7def89072357eaa8be93f4b36f81e6470b16 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Wed, 3 Sep 2025 21:41:52 +0200 Subject: [PATCH 3/4] change date in projects instead of beginning_year and end_year, --- routers/longProjects.py | 2 ++ routers/shortProjects.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/routers/longProjects.py b/routers/longProjects.py index 69adca5..80bb5d7 100644 --- a/routers/longProjects.py +++ b/routers/longProjects.py @@ -23,6 +23,8 @@ def read_longProjects(): p.repo_link, p.nb_image, p.image_name, + p.beginning_year, + p.end_year, GROUP_CONCAT(DISTINCT s.name ORDER BY s.name SEPARATOR ', ') AS skills FROM projects p diff --git a/routers/shortProjects.py b/routers/shortProjects.py index 16da9bb..fecc2ed 100644 --- a/routers/shortProjects.py +++ b/routers/shortProjects.py @@ -21,6 +21,8 @@ def read_shortProjects(): p.school, p.nb_image, p.image_name, + p.beginning_year, + p.end_year, GROUP_CONCAT(DISTINCT s.name ORDER BY s.name SEPARATOR ', ') AS skills FROM projects p From 15dce53e86646292a32b5c8d600e7c1e5707710a Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Thu, 4 Sep 2025 23:43:57 +0200 Subject: [PATCH 4/4] remove of nb_image in shortProjects --- routers/shortProjects.py | 1 - 1 file changed, 1 deletion(-) diff --git a/routers/shortProjects.py b/routers/shortProjects.py index fecc2ed..be5aead 100644 --- a/routers/shortProjects.py +++ b/routers/shortProjects.py @@ -19,7 +19,6 @@ def read_shortProjects(): p.title, p.short_description, p.school, - p.nb_image, p.image_name, p.beginning_year, p.end_year,