@@ -4,83 +4,36 @@ import {
44} from '../../utils/fetchTopUsersFromDb'
55import { fetchTopThreeUsersByPullRequests } from '../../utils/fetchTopThreeUsersByPullRequests'
66
7- export default async ( req , res ) => {
7+ export default async function handler ( req , res ) {
88 res . setHeader ( 'Access-Control-Allow-Origin' , '*' )
99 res . setHeader ( 'Access-Control-Allow-Methods' , 'GET' )
1010 res . setHeader ( 'Access-Control-Allow-Headers' , 'Content-Type' )
11- res . setHeader ( 'Cache-Control' , 'public, max-age=300' ) //* Cache for 5 minutes
11+ res . setHeader ( 'Cache-Control' , 'public, max-age=300' )
1212
1313 try {
1414 const message = 'API: Checking DB for cached top three users...'
1515 console . log ( message )
1616 res . setHeader ( 'X-Debug-Message' , message )
1717
18- const timeoutPromise = new Promise ( ( _ , reject ) => {
19- setTimeout (
20- ( ) => reject ( new Error ( 'DB operation timed out after 15 seconds' ) ) ,
21- 15000
22- )
23- } )
18+ let data = await getTopThreeUsersFromDb ( )
2419
25- let data
26- try {
27- data = await Promise . race ( [ getTopThreeUsersFromDb ( ) , timeoutPromise ] )
28- } catch ( dbError ) {
29- console . log ( 'DB fetch timed out or failed:' , dbError . message )
30- res . setHeader ( 'X-Debug-Message-1' , `DB Error: ${ dbError . message } ` )
31- data = null
32- }
33-
34- if ( ! data || data . length === 0 ) {
35- const message2 = 'API: No cached data found, fetching from GitHub...'
36- console . log ( message2 )
37- res . setHeader ( 'X-Debug-Message-2' , message2 )
38-
39- try {
40- data = await fetchTopThreeUsersByPullRequests (
41- 'fork-commit-merge/fork-commit-merge'
42- )
20+ if ( ! data ) {
21+ console . log ( 'No cached data found, fetching from GitHub...' )
22+ data = await fetchTopThreeUsersByPullRequests ( 'fork-commit-merge/fork-commit-merge' )
4323
44- if ( data && data . length > 0 ) {
45- const message3 = 'API: Storing new data in DB...'
46- console . log ( message3 )
47- res . setHeader ( 'X-Debug-Message-3' , message3 )
48-
49- storeTopThreeUsersInDb ( data ) . catch ( storeError => {
50- console . error ( 'Failed to store data in DB:' , storeError )
51- } )
52- }
53- } catch ( githubError ) {
54- console . error ( 'GitHub fetch error:' , githubError . message )
55- res . setHeader (
56- 'X-Debug-Message-5' ,
57- `GitHub Error: ${ githubError . message } `
58- )
59- return res
60- . status ( 500 )
61- . json ( { error : 'Failed to fetch contributors data' } )
24+ if ( data && data . length > 0 ) {
25+ await storeTopThreeUsersInDb ( data )
6226 }
63- } else {
64- const message4 = 'API: Using cached data from DB'
65- console . log ( message4 )
66- res . setHeader ( 'X-Debug-Message-4' , message4 )
6727 }
6828
6929 if ( ! data || data . length === 0 ) {
70- const message5 = 'API: No data available'
71- console . log ( message5 )
72- res . setHeader ( 'X-Debug-Message-5' , message5 )
7330 return res . status ( 404 ) . json ( { error : 'No data available' } )
7431 }
7532
76- res . status ( 200 ) . json ( data )
33+ return res . status ( 200 ) . json ( data )
7734 } catch ( error ) {
7835 console . error ( 'API route error:' , error )
79- console . error ( 'Error details:' , error . response ?. data || error . message )
80-
81- res . status ( 500 ) . json ( {
82- error : 'Internal Server Error' ,
83- message : error . message || 'Unknown error'
84- } )
36+ return res . status ( 500 ) . json ( { error : 'Internal Server Error' } )
8537 }
8638}
39+
0 commit comments