diff --git a/metrics/github/metrics.py b/metrics/github/metrics.py index 569ab2e1..c8f5fd61 100644 --- a/metrics/github/metrics.py +++ b/metrics/github/metrics.py @@ -75,3 +75,16 @@ def convert_issue_counts_to_metrics(counts): } ) return metrics + + +def convert_codespaces_to_dicts(codespaces): + return [ + { + "organisation": c.org, + "repo": c.repo_name, + "user": c.user, + "created_at": c.created_at, + "last_used_at": c.last_used_at, + } + for c in codespaces + ] diff --git a/metrics/tasks/codespaces.py b/metrics/tasks/codespaces.py new file mode 100644 index 00000000..38159fb7 --- /dev/null +++ b/metrics/tasks/codespaces.py @@ -0,0 +1,24 @@ +import sys + +import structlog + +import metrics.github.github as github +from metrics.github.metrics import convert_codespaces_to_dicts +from metrics.timescaledb import db, tables + + +log = structlog.get_logger() + + +def main(): + log.info("Getting codespaces") + codespaces = github.codespaces(org="opensafely") + log.info(f"Got {len(codespaces)} codespaces") + + log.info("Writing data") + db.upsert(tables.GitHubCodespaces, convert_codespaces_to_dicts(codespaces)) + log.info("Written data") + + +if __name__ == "__main__": + sys.exit(main())