Skip to content

DataRepository

Bogdan Ciobanu edited this page Sep 9, 2020 · 7 revisions

DataRepository is the interface of the Storage component used in the project

Responsibilities

It's responsibilities are managing and providing access to a database in which to store all LLVM revision related information gathered by the fetcher components.

Data flow

There are two types of data that comes from the Fetcher components:

  • GitHubData: raw commit data, containing only metadata surrounding the revision (e.g. commit hash, timestamp, branch)
  • BuildBotData: buildbot specific information, regarding the compilation of that revision (e.g. compilation status, logs)

GitHubData is used as a scaffolding for the actual database entry, modeled after the BuildInfo class. You must first acquire the Git data for a revision, after which to begin acquiring Buildbot information, since the Buildbot information alone is not enough to create a database entry.

This component provides only one data type: single or enlisted BuildInfo objects: either queried by commit hash, or by their commit order.

Interface

  • createRevisionEntry: used for creating a new "revision" entry from a ParsedGitData object
  • updateRevisionEntry: used for appending information regarding a buildbot to an existing "revision" entry
  • deleteRevisionEntry: used for deleting a single "revision" entry by commit hash
  • getRevisionEntry: used for querying the database for a "revision" entry after a commit hash
  • getLastRevisionEntries: the primary method of interest to the front end. Queries the database for a range of entries, starting from an offset from the latest entry, and getting only a specified number from that offset. This is used to populate the pages of the dashboard
  • getBuildbotIndex: used for querying the database for an "index" entry after a builder name
  • setBuildbotIndex: used for updating an "index' entry with a larger value for a specific builder's index

Related classes

  • DatastoreRepository
  • Git fetcher (need link)
  • Buildbot fetcher (need link)
  • REST API (need link)