From 5d3dcf51065bff3c7a55090d175a5b53eecce654 Mon Sep 17 00:00:00 2001 From: Vincent Date: Thu, 2 Apr 2026 21:31:22 +0000 Subject: [PATCH] tasks api --- main.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..7de2394 --- /dev/null +++ b/main.py @@ -0,0 +1,67 @@ +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import List, Optional + +# Initialisation de l'application +app = FastAPI( + title="Task API CRUD", + root_path="/proxy/9000/", # Aide certains proxys à s'y retrouver + openapi_url="/openapi.json" ) + +# --- Modèles de données --- +class TaskCreate(BaseModel): + title: str + description: Optional[str] = None + completed: bool = False + +class Task(TaskCreate): + id: int + +# --- Base de données en mémoire --- +tasks_db = [] +current_id = 1 + + +# --- Routes CRUD --- + +# 1. CREATE : Ajouter une nouvelle tâche +@app.post("/tasks", response_model=Task, status_code=201) +def create_task(task: TaskCreate): + global current_id + # Création de la tâche avec l'ID actuel + new_task = Task(id=current_id, **task.model_dump()) + tasks_db.append(new_task) + current_id += 1 + return new_task + +# 2. READ : Récupérer toutes les tâches +@app.get("/tasks", response_model=List[Task]) +def get_tasks(): + return tasks_db + +# 3. READ : Récupérer une tâche spécifique via son ID +@app.get("/tasks/{task_id}", response_model=Task) +def get_task(task_id: int): + for task in tasks_db: + if task.id == task_id: + return task + raise HTTPException(status_code=404, detail="Tâche non trouvée") + +# 4. UPDATE : Mettre à jour une tâche +@app.put("/tasks/{task_id}", response_model=Task) +def update_task(task_id: int, updated_task: TaskCreate): + for index, task in enumerate(tasks_db): + if task.id == task_id: + # Remplacement de l'ancienne tâche par la nouvelle + tasks_db[index] = Task(id=task_id, **updated_task.model_dump()) + return tasks_db[index] + raise HTTPException(status_code=404, detail="Tâche non trouvée") + +# 5. DELETE : Supprimer une tâche +@app.delete("/tasks/{task_id}", status_code=204) +def delete_task(task_id: int): + for index, task in enumerate(tasks_db): + if task.id == task_id: + tasks_db.pop(index) + return + raise HTTPException(status_code=404, detail="Tâche non trouvée") \ No newline at end of file