Remove temporary repository language ID fallbacks
Part of &23254. Follow-up to #614125 (closed), #614131 (closed), #614133 (closed), and #614143 (closed).
Why
These issues keep temporary fallbacks to programming_language_id while repository_languages.language_id may still be NULL.
In 19.6, after the language_id backfill and NOT NULL validation are complete, we can remove the fallbacks and consistently use the stable language_id.
What to change
- Use
language_idonly in the project programming-language scopes from #614133 (closed). - Keep a single
RepositoryLanguage#programming_languageassociation keyed bylanguage_id, and simplify its preloading, from #614125 (closed). - Use
language_idonly for language-detection updates and deletions from #614143 (closed). - Remove the old
programming_languageuniqueness validation and requirelanguage_idin the validation from #614131 (closed). - Remove or update tests that cover the temporary fallback behavior.
Prerequisites
- The
repository_languages.language_idbackfill is complete. - The NOT NULL constraint is validated (see !247554 (merged)).