Using the title element, as the identifier is internal, but it's useful for
development to be able to find it out, if you want to run the job for testing.
This isn't new information, but derived from information already in the
database. It's collected here to make querying faster.
The table is updated when each new revision is entered.
Previously, if you searched for packages like Ruby or Guile, the actual Ruby
and Guile packages would be low in the rankings, as the terms Ruby or Guile
don't appear much in the descriptions.
Therefore, change the ordering to make these exact matches appear higher up.
This is useful when you want to pass in data with some duplicates, and get
back a list of ids, where the duplicate entries are represented by the same
id.
Add tests around the package module, extract out the use of the
inferior-package record assessors so that they aren't part of the tests, and
switch across the package-metadata module to use
insert-missing-data-and-return-all-ids.
squee, returns all data as strings, and expects strings as inputs to
queries. So, keeping the ids as strings was easy initially, but it means that
you can't tell from the type whether it should be quoted, or not...
Therefore, handle ids as strings, converting them to numbers when they're
fetched from the database, and back to strings as part of the queries.
Use exec-query-with-null-handling to distinguish NULL values, change it to
just take a list of fields and remove the handlers. Also, add a sets-of-data?
parameter so that this can be used licenses.
PQgetvalue used by squee returns null values as empty strings, which are
ambiguous for string fields. Therefore, use PQgetisnull to implement a
serialiser for squee which checks empty strings to see if they're actually a
NULL value, then returns '() in this case.
exec-query-with-null-handling can be used to access this behaviour.
To associate a set of lint checkers with a specific revision. While there is
the association through the lint warnings, that only works for checkers where
there are lint warnings for that revision.
Therefore, to allow finding all the checkers for a specific revision, also
associate them directly with the revision.