export async function MakeRepoTimeSeries()

in functions/src/report.ts [437:492]


export async function MakeRepoTimeSeries(
  org: string,
  repo: string,
  field: string,
  points: number,
  daysBetween: number = 1
): Promise<report.RepoTimeSeries> {
  const result: report.RepoTimeSeries = {
    org,
    repo,
    field,
    data: {}
  };

  const now = new Date();
  for (let i = 0; i < points; i++) {
    // Always start at day now-1 because we don't always have today's report
    const diff = (1 + i * daysBetween) * DAY_MS;
    const pointDate = new Date(now.getTime() - diff);

    const dateSlug = util.DateSlug(pointDate);
    const snapshot = await snap.FetchRepoSnapshot(org, repo, pointDate);
    if (!snapshot) {
      console.warn(`Could not fetch data for ${repo} on ${dateSlug}`);
      continue;
    }

    let val: number;
    switch (field) {
      case "open_issues_count":
      case "open_issues":
        val = snapshot.open_issues_count;
        break;
      case "closed_issues_count":
      case "closed_issues":
        val = snapshot.closed_issues_count;
        break;
      case "stargazers_count":
      case "stars_count":
      case "stars":
        val = snapshot.stargazers_count;
        break;
      case "sam":
      case "samscore":
      case "sam_score":
        val = ComputeSAMScore(snapshot);
        break;
      default:
        throw `Invalid field: ${field}`;
    }

    result.data[dateSlug] = val;
  }

  return result;
}