(event: GitHubEvent)
| 107 | } |
| 108 | |
| 109 | function processEvent(event: GitHubEvent) { |
| 110 | const repo = getOrCreateRepo(event.repo.name, event.repo.id); |
| 111 | getOrCreateUser(event.actor.login, event.actor.id); |
| 112 | |
| 113 | switch (event.type) { |
| 114 | case 'IssuesEvent': { |
| 115 | const e = event as IssuesEvent; |
| 116 | const key = `${event.repo.name}#${e.payload.issue.number}`; |
| 117 | const issue = e.payload.issue; |
| 118 | |
| 119 | if (e.payload.action === 'opened') { |
| 120 | const user = getOrCreateUser(issue.user.login, issue.user.id); |
| 121 | user.issuesOpened++; |
| 122 | } |
| 123 | |
| 124 | if (!issuesMap.has(key)) { |
| 125 | issuesMap.set(key, { |
| 126 | id: issue.id, |
| 127 | repoId: repo.id, |
| 128 | repoFullName: repo.fullName, |
| 129 | number: issue.number, |
| 130 | title: issue.title, |
| 131 | body: issue.body, |
| 132 | state: issue.state, |
| 133 | author: issue.user.login, |
| 134 | labels: issue.labels.map((l) => l.name), |
| 135 | comments: [], |
| 136 | createdAt: issue.created_at, |
| 137 | updatedAt: issue.updated_at, |
| 138 | closedAt: issue.closed_at, |
| 139 | }); |
| 140 | } else { |
| 141 | const existing = issuesMap.get(key)!; |
| 142 | existing.state = issue.state; |
| 143 | existing.updatedAt = issue.updated_at; |
| 144 | existing.closedAt = issue.closed_at; |
| 145 | } |
| 146 | break; |
| 147 | } |
| 148 | |
| 149 | case 'IssueCommentEvent': { |
| 150 | const e = event as IssueCommentEvent; |
| 151 | const key = `${event.repo.name}#${e.payload.issue.number}`; |
| 152 | const comment = e.payload.comment; |
| 153 | |
| 154 | const user = getOrCreateUser(comment.user.login, comment.user.id); |
| 155 | user.commentsMade++; |
| 156 | |
| 157 | if (!issuesMap.has(key)) { |
| 158 | const issue = e.payload.issue; |
| 159 | issuesMap.set(key, { |
| 160 | id: issue.id, |
| 161 | repoId: repo.id, |
| 162 | repoFullName: repo.fullName, |
| 163 | number: issue.number, |
| 164 | title: issue.title, |
| 165 | body: issue.body, |
| 166 | state: issue.state, |
no test coverage detected