Skip to content

Commit 972f900

Browse files
committed
Update filter values endpoint to return mappings
The /filter/values/{filter} endpoint now returns a dictionary mapping codes to titles for subjects and attributes, and a capitalized dictionary for semesters. This improves the API response structure for frontend consumption.
1 parent 6f43a5d commit 972f900

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

app/routers/course.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -220,14 +220,20 @@ def search_course(
220220

221221

222222
@router.get("/filter/values/{filter}")
223-
def get_filter_values(session: SessionDep, filter: CourseFilter) -> list[str]:
224-
column = None
223+
def get_filter_values(session: SessionDep, filter: CourseFilter) -> dict[str, str]:
224+
code_col, title_col = None, None
225225
if filter is CourseFilter.subjects:
226-
column = Subject.subj_code
226+
code_col = Subject.subj_code
227+
title_col = Subject.title
227228
elif filter is CourseFilter.attributes:
228-
column = Attribute.attr_code
229+
code_col = Attribute.attr_code
230+
title_col = Attribute.title
229231
elif filter is CourseFilter.semesters:
230-
column = Course_Offering.semester
232+
result_scalars = (
233+
session.execute(select(Course_Offering.semester).distinct()).scalars().all()
234+
)
235+
return {sem: sem.capitalize() for sem in result_scalars}
231236
else:
232237
return None
233-
return session.execute(select(column).distinct()).scalars().all()
238+
result_mappings = session.execute(select(code_col, title_col)).mappings().all()
239+
return {row[code_col]: row[title_col] for row in result_mappings}

0 commit comments

Comments
 (0)