feat: adds opentelemetry support

This commit is contained in:
tdurieux
2024-03-27 11:17:56 +00:00
parent 803720e2ea
commit 0caf786c9c
24 changed files with 4522 additions and 1187 deletions

View File

@@ -6,6 +6,7 @@ import Repository from "./Repository";
import { GitHubRepository } from "./source/GitHubRepository";
import PullRequest from "./PullRequest";
import AnonymizedPullRequestModel from "./database/anonymizedPullRequests/anonymizedPullRequests.model";
import { trace } from "@opentelemetry/api";
/**
* Model for a user
@@ -55,6 +56,10 @@ export default class User {
*/
force: boolean;
}): Promise<GitHubRepository[]> {
const span = trace
.getTracer("ano-file")
.startSpan("User.getGitHubRepositories");
span.setAttribute("username", this.username);
if (
!this._model.repositories ||
this._model.repositories.length == 0 ||
@@ -105,11 +110,14 @@ export default class User {
// have the model
await this._model.save();
span.end();
return repositories.map((r) => new GitHubRepository(r));
} else {
return (
const out = (
await RepositoryModel.find({ _id: { $in: this._model.repositories } })
).map((i) => new GitHubRepository(i));
span.end();
return out;
}
}
@@ -118,6 +126,8 @@ export default class User {
* @returns the list of anonymized repositories
*/
async getRepositories() {
const span = trace.getTracer("ano-file").startSpan("User.getRepositories");
span.setAttribute("username", this.username);
const repositories = (
await AnonymizedRepositoryModel.find(
{
@@ -141,6 +151,7 @@ export default class User {
}
}
await Promise.all(promises);
span.end();
return repositories;
}
/**
@@ -148,6 +159,8 @@ export default class User {
* @returns the list of anonymized repositories
*/
async getPullRequests() {
const span = trace.getTracer("ano-file").startSpan("User.getPullRequests");
span.setAttribute("username", this.username);
const pullRequests = (
await AnonymizedPullRequestModel.find({
owner: this.id,
@@ -166,6 +179,7 @@ export default class User {
}
}
await Promise.all(promises);
span.end();
return pullRequests;
}