private void AddIssueOrPullRequest(GitHubEventRepository repository, GitHubEventIssueOrPullRequest issueOrPullRequest) { var index = _indexService.Index; if (index is null) { return; } var crawledRepo = index.Repos.SingleOrDefault(r => r.Id == repository.Id); if (crawledRepo is null) { return; } var crawledIssue = new CrawledIssue(); crawledIssue.Id = issueOrPullRequest.Id; crawledIssue.Repo = crawledRepo; crawledIssue.Number = issueOrPullRequest.Number; crawledIssue.CreatedAt = issueOrPullRequest.CreatedAt; crawledIssue.CreatedBy = issueOrPullRequest.User.Login; crawledIssue.IsPullRequest = issueOrPullRequest is GitHubEventPullRequest; UpdateIssueOrPullRequest(repository, issueOrPullRequest, crawledIssue); crawledRepo.Issues[crawledIssue.Number] = crawledIssue; AddTrieTerms(crawledIssue, crawledIssue.GetTrieTerms()); _indexService.NotifyIndexChanged(); }
private void RemoveIssue(CrawledRepo crawledRepo, CrawledIssue crawledIssue) { var oldTrieTerms = crawledIssue.GetTrieTerms(); crawledRepo.Issues.Remove(crawledIssue.Number); RemoveTrieTerms(crawledIssue, oldTrieTerms); }
private void UpdateTrie(CrawledIssue issue, IEnumerable <string> oldTerms) { var trie = _indexService.Index?.Trie; if (trie is null) { return; } var newTerms = issue.GetTrieTerms(); var removedTerms = oldTerms.Where(t => !newTerms.Contains(t)); var addedTerms = newTerms.Where(t => !oldTerms.Contains(t)); RemoveTrieTerms(issue, removedTerms); AddTrieTerms(issue, addedTerms); }