@@ -18,26 +18,31 @@ export default {
1818 const user_id = ( req as any ) . user . id ;
1919
2020 //Retrieve timetable title
21- const { timetable_title, semester } = req . body ;
22- if ( ! timetable_title ) {
23- return res . status ( 400 ) . json ( { error : "timetable title is required" } ) ;
24- }
25-
26- if ( ! semester ) {
21+ const { timetable_title, semester, favorite = false } = req . body ;
22+ if ( ! timetable_title || ! semester ) {
2723 return res
2824 . status ( 400 )
29- . json ( { error : "timetable semester is required" } ) ;
25+ . json ( { error : "timetable title and semester are required" } ) ;
3026 }
3127
3228 //Create query to insert the user_id and timetable_title into the db
3329 let insertTimetable = supabase
3430 . schema ( "timetable" )
3531 . from ( "timetables" )
36- . insert ( [ { user_id, timetable_title, semester } ] )
37- . select ( ) ;
32+ . insert ( [
33+ {
34+ user_id,
35+ timetable_title,
36+ semester,
37+ favorite,
38+ } ,
39+ ] )
40+ . select ( )
41+ . single ( ) ;
3842
3943 const { data : timetableData , error : timetableError } =
4044 await insertTimetable ;
45+
4146 if ( timetableError ) {
4247 return res . status ( 400 ) . json ( { error : timetableError . message } ) ;
4348 }
@@ -91,11 +96,11 @@ export default {
9196 const { id } = req . params ;
9297
9398 //Retrieve timetable title
94- const { timetable_title, semester } = req . body ;
95- if ( ! timetable_title && ! semester ) {
99+ const { timetable_title, semester, favorite } = req . body ;
100+ if ( ! timetable_title && ! semester && favorite === undefined ) {
96101 return res . status ( 400 ) . json ( {
97102 error :
98- "New timetable title or semester is required when updating a timetable" ,
103+ "New timetable title or semester or updated favorite status is required when updating a timetable" ,
99104 } ) ;
100105 }
101106
@@ -112,26 +117,15 @@ export default {
112117 . eq ( "user_id" , user_id )
113118 . maybeSingle ( ) ;
114119
115- const timetable_user_id = timetableUserData ?. user_id ;
116-
117- if ( timetableUserError )
118- return res . status ( 400 ) . json ( { error : timetableUserError . message } ) ;
119-
120- //Validate timetable validity:
121- if ( ! timetableUserData || timetableUserData . length === 0 ) {
122- return res . status ( 404 ) . json ( { error : "Calendar id not found" } ) ;
123- }
124-
125- //Validate user access
126- if ( user_id !== timetable_user_id ) {
120+ if ( timetableUserError || ! timetableUserData )
127121 return res
128- . status ( 401 )
129- . json ( { error : "Unauthorized access to timetable events" } ) ;
130- }
122+ . status ( 400 )
123+ . json ( { error : "Timetable not found or unauthorized" } ) ;
131124
132125 let updateData : any = { } ;
133126 if ( timetable_title ) updateData . timetable_title = timetable_title ;
134127 if ( semester ) updateData . semester = semester ;
128+ if ( favorite !== undefined ) updateData . favorite = favorite ;
135129
136130 //Update timetable title, for authenticated user only
137131 let updateTimetableQuery = supabase
@@ -140,7 +134,8 @@ export default {
140134 . update ( updateData )
141135 . eq ( "id" , id )
142136 . eq ( "user_id" , user_id )
143- . select ( ) ;
137+ . select ( )
138+ . single ( ) ;
144139
145140 const { data : timetableData , error : timetableError } =
146141 await updateTimetableQuery ;
@@ -180,7 +175,6 @@ export default {
180175 . eq ( "id" , id )
181176 . eq ( "user_id" , user_id )
182177 . maybeSingle ( ) ;
183- const timetable_user_id = timetableUserData ?. user_id ;
184178
185179 if ( timetableUserError )
186180 return res . status ( 400 ) . json ( { error : timetableUserError . message } ) ;
@@ -190,13 +184,6 @@ export default {
190184 return res . status ( 404 ) . json ( { error : "Calendar id not found" } ) ;
191185 }
192186
193- //Validate user access
194- if ( user_id !== timetable_user_id ) {
195- return res
196- . status ( 401 )
197- . json ( { error : "Unauthorized access to timetable events" } ) ;
198- }
199-
200187 // Delete only if the timetable belongs to the authenticated user
201188 let deleteTimetableQuery = supabase
202189 . schema ( "timetable" )
0 commit comments