From a793085975f65d475b3b92221842dbe3a59382b0 Mon Sep 17 00:00:00 2001 From: youssefr26 Date: Fri, 15 Nov 2024 16:50:35 -0500 Subject: [PATCH 1/2] Added search route for courses --- labconnect/main/opportunity_routes.py | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/labconnect/main/opportunity_routes.py b/labconnect/main/opportunity_routes.py index 8cd59f31..b9736afb 100644 --- a/labconnect/main/opportunity_routes.py +++ b/labconnect/main/opportunity_routes.py @@ -11,6 +11,7 @@ RecommendsCourses, RecommendsMajors, User, + Courses, ) @@ -605,6 +606,41 @@ def getLabManagerOpportunityCards(rcs_id: str): # return cards +@main_blueprint.get("/searchCourses/") +def searchLabManagers(query: str): + # Perform a search on Courses table by code and name using ILIKE for exact partial matches + stmt = ( + db.select(Courses) + .distinct() + .where( + (Courses.code.ilike(f"%{query}%")) + | ( + User.last_name.ilike( + f"%{query}%" + ) # Case-insensitive partial match on course code + ) + | ( + Courses.name.ilike( + f"%{query}%" + ) # Case-insensitive partial match on course name + ) + ) + ) + + results = db.session.execute(stmt).scalars().all() + + # Format results as JSON + courses = [ + { + "code": course.code, + "name": course.name, + } + for course in results + ] + + return {"courses": courses}, 200 + + # functions to create/edit/delete opportunities @main_blueprint.post("/createOpportunity") @jwt_required() From 7a682fc2829e35f0959a449ad81dc3a343934245 Mon Sep 17 00:00:00 2001 From: youssefr26 Date: Fri, 15 Nov 2024 16:51:23 -0500 Subject: [PATCH 2/2] Typo fix --- labconnect/main/opportunity_routes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labconnect/main/opportunity_routes.py b/labconnect/main/opportunity_routes.py index b9736afb..af3ecfb4 100644 --- a/labconnect/main/opportunity_routes.py +++ b/labconnect/main/opportunity_routes.py @@ -607,7 +607,7 @@ def getLabManagerOpportunityCards(rcs_id: str): @main_blueprint.get("/searchCourses/") -def searchLabManagers(query: str): +def searchCourses(query: str): # Perform a search on Courses table by code and name using ILIKE for exact partial matches stmt = ( db.select(Courses)