@@ -42,11 +42,7 @@ def search_course_query(
4242 Course .desc_text ,
4343 Course .credit_min ,
4444 Course .credit_max ,
45- func .group_concat (
46- distinct (
47- func .concat (Course_Offering .semester , " " , Course_Offering .sem_year )
48- )
49- ).label ("sem_list" ),
45+ func .group_concat (distinct (Course_Offering .semester )).label ("sem_list" ),
5046 func .group_concat (distinct (Course_Attribute .attr_code )).label ("attr_list" ),
5147 func .regexp_like (
5248 func .concat (Course .subj_code , " " , Course .code_num ),
@@ -148,7 +144,7 @@ def search_course(
148144 deptFilters : str | None = None ,
149145 attrFilters : str | None = None ,
150146 semFilters : str | None = None ,
151- ) -> list [dict [str , str | int | None ]]:
147+ ) -> list [dict [str , str | int | list [ str ] ]]:
152148 # FastAPI does not support list query parameters
153149 dept_filters = deptFilters .split ("," ) if deptFilters else None
154150 attr_filters = attrFilters .split ("," ) if attrFilters else None
@@ -214,7 +210,13 @@ def search_course(
214210 sem_filter_regex ,
215211 )
216212 ).all ()
217- return [dict (row ._mapping ) for row in results ]
213+ results_dict = [dict (row ._mapping ) for row in results ]
214+ for course in results_dict :
215+ course ["sem_list" ] = course ["sem_list" ].split ("," ) if course ["sem_list" ] else []
216+ course ["attr_list" ] = (
217+ course ["attr_list" ].split ("," ) if course ["attr_list" ] else []
218+ )
219+ return results_dict
218220
219221
220222@router .get ("/filter/values/{filter}" )
0 commit comments