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})