@@ -3,85 +3,85 @@ import { getOrSetRedis } from "@/lib/redis/get-set";
33import { fetchUsosApi } from "@/lib/usos" ;
44
55interface UsosCourseEditionGroup {
6- start_time : string ;
7- end_time : string ;
8- type : string ;
9- course_id : string ;
10- course_name : {
11- pl : string ;
12- } ;
13- group_number : number ;
14- classtype_id : string ;
15- classtype_name : {
16- pl : string ;
17- } ;
18- unit_id : string ;
19- room_number : string ;
20- building_name : string ;
21- lecturer_ids : string [ ] ;
22- classgroup_profile_url : string ;
6+ start_time : string ;
7+ end_time : string ;
8+ type : string ;
9+ course_id : string ;
10+ course_name : {
11+ pl : string ;
12+ } ;
13+ group_number : number ;
14+ classtype_id : string ;
15+ classtype_name : {
16+ pl : string ;
17+ } ;
18+ unit_id : string ;
19+ room_number : string ;
20+ building_name : string ;
21+ lecturer_ids : string [ ] ;
22+ classgroup_profile_url : string ;
2323}
2424
2525export interface CourseGroupDTO {
26- courseId : string ;
27- courseName : string ;
28- groupNumber : number ;
29- classtypeId : string ;
30- classtypeName : string ;
31- unitId : string ;
32- startTime : string ;
33- endTime : string ;
34- roomNumber : string ;
35- buildingName : string ;
36- lecturerIds : string [ ] ;
37- classgroupProfileUrl : string ;
26+ courseId : string ;
27+ courseName : string ;
28+ groupNumber : number ;
29+ classtypeId : string ;
30+ classtypeName : string ;
31+ unitId : string ;
32+ startTime : string ;
33+ endTime : string ;
34+ roomNumber : string ;
35+ buildingName : string ;
36+ lecturerIds : string [ ] ;
37+ classgroupProfileUrl : string ;
3838}
3939
4040function normalizeCourseGroup ( data : UsosCourseEditionGroup ) : CourseGroupDTO {
41- return {
42- courseId : data . course_id ,
43- courseName : data . course_name . pl ,
44- groupNumber : data . group_number ,
45- classtypeId : data . classtype_id ,
46- classtypeName : data . classtype_name . pl ,
47- unitId : data . unit_id ,
48- startTime : data . start_time ,
49- endTime : data . end_time ,
50- roomNumber : data . room_number ,
51- buildingName : data . building_name ,
52- lecturerIds : data . lecturer_ids ,
53- classgroupProfileUrl : data . classgroup_profile_url ,
54- } ;
41+ return {
42+ courseId : data . course_id ,
43+ courseName : data . course_name . pl ,
44+ groupNumber : data . group_number ,
45+ classtypeId : data . classtype_id ,
46+ classtypeName : data . classtype_name . pl ,
47+ unitId : data . unit_id ,
48+ startTime : data . start_time ,
49+ endTime : data . end_time ,
50+ roomNumber : data . room_number ,
51+ buildingName : data . building_name ,
52+ lecturerIds : data . lecturer_ids ,
53+ classgroupProfileUrl : data . classgroup_profile_url ,
54+ } ;
5555}
5656
5757export async function getCourseEditionGroupsAction (
58- courseId : string ,
59- termId : string ,
60- start : string ,
61- days : number ,
58+ courseId : string ,
59+ termId : string ,
60+ start : string ,
61+ days : number ,
6262) : Promise < CourseGroupDTO [ ] > {
63- return getOrSetRedis ( {
64- redis,
65- key : `usos:course_edition:${ courseId } :${ termId } :${ start } :${ days . toString ( ) } ` ,
66- ttlSeconds : 43_200 ,
67- fetcher : async ( ) => {
68- const data = await fetchUsosApi < UsosCourseEditionGroup [ ] | null > (
69- "tt/course_edition" ,
70- {
71- course_id : courseId ,
72- term_id : termId ,
73- start,
74- days : days . toString ( ) ,
75- fields :
76- "start_time|end_time|type|course_id|course_name|group_number|classtype_id|classtype_name|unit_id|room_number|building_name|lecturer_ids|classgroup_profile_url" ,
77- } ,
78- ) ;
63+ return getOrSetRedis ( {
64+ redis,
65+ key : `usos:course_edition:${ courseId } :${ termId } :${ start } :${ days . toString ( ) } ` ,
66+ ttlSeconds : 43_200 ,
67+ fetcher : async ( ) => {
68+ const data = await fetchUsosApi < UsosCourseEditionGroup [ ] | null > (
69+ "tt/course_edition" ,
70+ {
71+ course_id : courseId ,
72+ term_id : termId ,
73+ start,
74+ days : days . toString ( ) ,
75+ fields :
76+ "start_time|end_time|type|course_id|course_name|group_number|classtype_id|classtype_name|unit_id|room_number|building_name|lecturer_ids|classgroup_profile_url" ,
77+ } ,
78+ ) ;
7979
80- if ( data == null ) {
81- return [ ] ;
82- }
80+ if ( data == null ) {
81+ return [ ] ;
82+ }
8383
84- return data . map ( ( group ) => normalizeCourseGroup ( group ) ) ;
85- } ,
86- } ) ;
84+ return data . map ( ( group ) => normalizeCourseGroup ( group ) ) ;
85+ } ,
86+ } ) ;
8787}
0 commit comments