Skip to content

Commit ecfe18b

Browse files
238 add a way to add recommended classes (#242)
2 parents bee103f + 7a682fc commit ecfe18b

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

labconnect/main/opportunity_routes.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
Opportunities,
1212
RecommendsClassYears,
1313
User,
14+
Courses,
1415
)
1516

1617
from . import main_blueprint
@@ -586,6 +587,41 @@ def getLabManagerOpportunityCards(rcs_id: str):
586587
# return cards
587588

588589

590+
@main_blueprint.get("/searchCourses/<string:query>")
591+
def searchCourses(query: str):
592+
# Perform a search on Courses table by code and name using ILIKE for exact partial matches
593+
stmt = (
594+
db.select(Courses)
595+
.distinct()
596+
.where(
597+
(Courses.code.ilike(f"%{query}%"))
598+
| (
599+
User.last_name.ilike(
600+
f"%{query}%"
601+
) # Case-insensitive partial match on course code
602+
)
603+
| (
604+
Courses.name.ilike(
605+
f"%{query}%"
606+
) # Case-insensitive partial match on course name
607+
)
608+
)
609+
)
610+
611+
results = db.session.execute(stmt).scalars().all()
612+
613+
# Format results as JSON
614+
courses = [
615+
{
616+
"code": course.code,
617+
"name": course.name,
618+
}
619+
for course in results
620+
]
621+
622+
return {"courses": courses}, 200
623+
624+
589625
# functions to create/edit/delete opportunities
590626
@main_blueprint.post("/createOpportunity")
591627
@jwt_required()

0 commit comments

Comments
 (0)