diff options
Diffstat (limited to 'app/models/programming_language.rb')
-rw-r--r-- | app/models/programming_language.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/app/models/programming_language.rb b/app/models/programming_language.rb index 06e3034e56a..4156c672518 100644 --- a/app/models/programming_language.rb +++ b/app/models/programming_language.rb @@ -10,4 +10,22 @@ class ProgrammingLanguage < ApplicationRecord sanitized_names = names.map(&method(:sanitize_sql_like)) where(arel_table[:name].matches_any(sanitized_names)) end + + def self.most_popular(limit = 25) + sql = <<~SQL + SELECT + mcv + FROM + pg_stats + CROSS JOIN LATERAL + unnest(most_common_vals::text::int[]) mt(mcv) + WHERE + tablename = 'repository_languages' and attname='programming_language_id' + LIMIT + $1 + SQL + ids = connection.exec_query(sql, 'SQL', [limit]).rows.flatten + + where(id: ids).order(:name) + end end |