From 7ac864d17dfd59b7c8e85a57e0ca303ce8ad432e Mon Sep 17 00:00:00 2001 From: julien Lengrand-Lambert Date: Fri, 10 Oct 2025 14:12:17 +0000 Subject: [PATCH] Add extracurricular activities and signup validation to the API --- src/app.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/app.py b/src/app.py index 4ebb1d9..c47f8be 100644 --- a/src/app.py +++ b/src/app.py @@ -38,6 +38,45 @@ activities = { "schedule": "Mondays, Wednesdays, Fridays, 2:00 PM - 3:00 PM", "max_participants": 30, "participants": ["john@mergington.edu", "olivia@mergington.edu"] + }, + # Sports related activities + "Soccer Team": { + "description": "Join the school soccer team and compete in matches", + "schedule": "Wednesdays, 4:00 PM - 5:30 PM", + "max_participants": 18, + "participants": ["lucas@mergington.edu", "mia@mergington.edu"] + }, + "Basketball Club": { + "description": "Practice basketball skills and play friendly games", + "schedule": "Thursdays, 3:30 PM - 5:00 PM", + "max_participants": 15, + "participants": ["liam@mergington.edu", "ava@mergington.edu"] + }, + # Artistic activities + "Art Workshop": { + "description": "Explore painting, drawing, and sculpture techniques", + "schedule": "Mondays, 4:00 PM - 5:30 PM", + "max_participants": 16, + "participants": ["ella@mergington.edu", "noah@mergington.edu"] + }, + "Drama Club": { + "description": "Act, direct, and produce school plays and performances", + "schedule": "Tuesdays, 3:30 PM - 5:00 PM", + "max_participants": 20, + "participants": ["isabella@mergington.edu", "jack@mergington.edu"] + }, + # Intellectual activities + "Mathletes": { + "description": "Compete in math competitions and solve challenging problems", + "schedule": "Fridays, 4:00 PM - 5:00 PM", + "max_participants": 10, + "participants": ["oliver@mergington.edu", "charlotte@mergington.edu"] + }, + "Science Club": { + "description": "Conduct experiments and explore scientific concepts", + "schedule": "Wednesdays, 3:30 PM - 5:00 PM", + "max_participants": 14, + "participants": ["henry@mergington.edu", "amelia@mergington.edu"] } } @@ -55,6 +94,12 @@ def get_activities(): @app.post("/activities/{activity_name}/signup") def signup_for_activity(activity_name: str, email: str): """Sign up a student for an activity""" + + # Validate student is not already signed up + for activity in activities.values(): + if email in activity["participants"]: + raise HTTPException(status_code=400, detail="Student already signed up for an activity") + # Validate activity exists if activity_name not in activities: raise HTTPException(status_code=404, detail="Activity not found")