Skip to content

Commit

Permalink
x-plat string_agg
Browse files Browse the repository at this point in the history
  • Loading branch information
segiddins committed Jul 21, 2024
1 parent a29dcb1 commit 9a5d9a2
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions lib/gemstash/compact_index_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ def build_result
private

def requirements_and_dependencies
db_type = DB::Rubygem.db.database_type
DB::Rubygem.association_left_join(versions: :dependencies).
where(name: @name).
where { versions[:indexed] }.
Expand All @@ -193,8 +194,12 @@ def requirements_and_dependencies
[versions[:number], versions[:platform], versions[:sha256], versions[:info_checksum], versions[:required_ruby_version], versions[:required_rubygems_version], versions[:created_at]]
end. # rubocop:disable Style/MultilineBlockChain
select_more do
[string_agg(dependencies[:requirements], "@").order(dependencies[:rubygem_name], dependencies[:id]).as(:dep_req_agg),
string_agg(dependencies[:rubygem_name], ",").order(dependencies[:rubygem_name]).as(:dep_name_agg)]
sa = case db_type
when :sqlite then ->(a, b) { string_agg(a, b) }
else ->(a, b) { Sequel.string_agg(a, b) }
end
[sa.call(dependencies[:requirements], "@").order(dependencies[:rubygem_name], dependencies[:id]).as(:dep_req_agg),
sa.call(dependencies[:rubygem_name], ",").order(dependencies[:rubygem_name]).as(:dep_name_agg)]
end. # rubocop:disable Style/MultilineBlockChain
map do |row|
reqs = row[:dep_req_agg]&.split("@")
Expand Down

0 comments on commit 9a5d9a2

Please sign in to comment.