master
1import { task } from '../../task.js'
2import { paginate } from '../../utils.js'
3import { DiscussionCommentsQuery } from './comments.graphql.js'
4
5export default task({
6 name: 'discussion-comments' as const,
7 run: async ({ octokit, data, batch }, { username }: { username: string }) => {
8 const discussionComments = paginate(octokit, DiscussionCommentsQuery, {
9 login: username,
10 })
11
12 data.discussionComments = []
13
14 const batchReactions = batch(
15 'reactions-discussion-comments',
16 'reactions-batch',
17 )
18
19 for await (const resp of discussionComments) {
20 if (!resp.user?.repositoryDiscussionComments.nodes) {
21 throw new Error('Failed to load discussion comments')
22 }
23
24 for (const comment of resp.user.repositoryDiscussionComments.nodes) {
25 data.discussionComments.push(comment)
26 batchReactions(comment.reactionsTotal.totalCount, comment.id)
27 }
28 octokit.log.info(
29 `| discussion comments ${data.discussionComments.length}/${resp.user.repositoryDiscussionComments.totalCount} (cost: ${resp.rateLimit?.cost}, remaining: ${resp.rateLimit?.remaining})`,
30 )
31 }
32 },
33})