Search backend: add support for arbitrary repo key-value pairs
Created by: camdencheek
This adds backend and search support for associating arbitrary, possibly user-defined key-value pairs with repositories. This is exposed in the search query language with the predicates repo:has(key:value)
and repo:has(tag)
.
Sorry for the large PR. Doing it in parts just wasn't making sense.
Test plan
Added tests for the GraphQL, database layer, and job creation layer. Also added basic integration tests.