@@ -26,6 +26,22 @@ router.post("/:username/update-platforms", async (req, res) => {
2626 const updatedUser = req . body ;
2727
2828 const user = await User . findOne ( { username } ) ;
29+ if ( ! user ) {
30+ return res . status ( 404 ) . json ( { message : "User not found" } ) ;
31+ }
32+
33+ // Check if platforms data is stale (older than 1 hour)
34+ const oneHourAgo = new Date ( Date . now ( ) - 60 * 60 * 1000 ) ; // 1 hour ago
35+ const isStale = ! user . platformsUpdatedAt || user . platformsUpdatedAt < oneHourAgo ;
36+
37+ if ( ! isStale ) {
38+ return res . status ( 429 ) . json ( {
39+ message : "Platform data was updated recently. Please wait before updating again." ,
40+ nextUpdateTime : new Date ( user . platformsUpdatedAt . getTime ( ) + 60 * 60 * 1000 ) // 1 hour from last update
41+ } ) ;
42+ }
43+
44+ // Update platform data
2945 if ( updatedUser . leetCode ?. username ) {
3046 user . leetCode . solved = updatedUser . leetCode . solved || user . leetCode . solved || 0 ;
3147 user . leetCode . rank = updatedUser . leetCode . rank || user . leetCode . rank || 0 ;
@@ -38,14 +54,25 @@ router.post("/:username/update-platforms", async (req, res) => {
3854 user . codeforces . rating = updatedUser . codeforces . rating || user . codeforces . rating || 0 ;
3955 }
4056
57+ // Set the timestamp for when platforms were last updated
58+ user . platformsUpdatedAt = new Date ( ) ;
59+
4160 await user . save ( ) ;
42- console . log ( `Platforms data updated for ${ username } ` ) ;
43- if ( ! user ) {
44- console . log ( "User not found" ) ;
45- }
61+
62+ console . log ( `Platforms data updated for ${ username } at ${ user . platformsUpdatedAt } ` ) ;
63+ res . status ( 200 ) . json ( {
64+ message : "Platform data updated successfully" ,
65+ updatedAt : user . platformsUpdatedAt ,
66+ nextUpdateTime : new Date ( user . platformsUpdatedAt . getTime ( ) + 60 * 60 * 1000 )
67+ } ) ;
4668
4769 } catch ( error ) {
48- console . error ( error ) ;
70+ console . error ( "Error updating platforms:" , error ) ;
71+ auditService . error ( "Update platforms failed" , error , {
72+ requestId : req . auditContext ?. requestId ,
73+ username : req . params . username
74+ } ) ;
75+ res . status ( 500 ) . json ( { message : "Internal server error" } ) ;
4976 }
5077} ) ;
5178
0 commit comments