(username)
| 294 | * @returns {Object} - Object containing the last merged PR |
| 295 | **/ |
| 296 | const fetchLastMergedPR = async (username) => { |
| 297 | try { |
| 298 | const searchParams = { |
| 299 | type: "pr", |
| 300 | is: "merged", |
| 301 | author: username, |
| 302 | }; |
| 303 | const createdURL = getGithubURL(searchParams, { sort: "merged", order: "desc", per_page: "1" }); |
| 304 | |
| 305 | const headers = { |
| 306 | Accept: "application/vnd.github+json", |
| 307 | Authorization: `Bearer ${config.get("githubAccessToken")}`, |
| 308 | org: config.get("githubApi.org"), |
| 309 | }; |
| 310 | |
| 311 | const res = await fetch(createdURL, { headers }); |
| 312 | |
| 313 | if (!res.ok) { |
| 314 | logger.error(`GitHub API request failed. Status: ${res.status}, URL: ${createdURL}`); |
| 315 | return null; |
| 316 | } |
| 317 | |
| 318 | const data = await res.json(); |
| 319 | |
| 320 | if (!data || !data.items || !data.items.length) { |
| 321 | logger.error(`No merged PRs found for user ${username}`); |
| 322 | return null; |
| 323 | } |
| 324 | |
| 325 | return data; |
| 326 | } catch (err) { |
| 327 | logger.error(`Error while fetching merged PRs: ${err}`); |
| 328 | throw err; |
| 329 | } |
| 330 | }; |
| 331 | /** |
| 332 | * Checks if the last PR merged by a user is within the last `days` days |
| 333 | * @param username {string} - Username String |
no test coverage detected