Skip to content

Commit 836e0bf

Browse files
committed
Revert changes to the MetadataService interface as they made little sense with the current implementation.
1 parent 5867685 commit 836e0bf

3 files changed

Lines changed: 16 additions & 15 deletions

File tree

modules/wikis/app/services/wikis/page_link_metadata_service.rb

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,42 +30,43 @@
3030

3131
module Wikis
3232
class PageLinkMetadataService
33-
# @param relation [ActiveRecord::Relation<Wikis::PageLink>]
34-
# @return [ServiceResult<ActiveRecord::Relation<Wikis::PageLink>]
35-
def self.call(relation) = new.call(relation)
36-
37-
def initialize
33+
# @param page_links [ActiveRecord::Relation<Wikis::PageLink>]
34+
def initialize(page_links)
3835
@result = ServiceResult.success(errors: ActiveModel::Errors.new(self))
36+
@relation = page_links
3937
end
4038

41-
def call(relation)
39+
# @return [ServiceResult<ActiveRecord::Relation<Wikis::PageLink>]
40+
def call
4241
metadata = relation.group_by(&:provider).flat_map do |provider, page_links|
4342
build_inputs(page_links).filter_map do |input_data|
4443
provider.resolve("queries.page_info").call(input_data).value_or(nil)
4544
end
4645
end
4746

48-
@result.result = enrich_models(relation, metadata)
47+
@result.result = enrich_models(metadata)
4948
@result
5049
end
5150

5251
private
5352

53+
attr_reader :relation
54+
5455
def build_inputs(page_links)
5556
page_links.filter_map do |page_link|
5657
Adapters::Input::PageInfo.build(identifier: page_link.identifier).value_or(nil)
5758
end
5859
end
5960

60-
def enrich_models(page_links, metadata)
61+
def enrich_models(metadata)
6162
identifier_title_map = metadata.sort_by(&:identifier).to_h { [it.identifier, it.title] }
6263
variable_placeholders = build_placeholders(identifier_title_map.size)
6364

64-
result_scope(page_links, metadata_join_sql(variable_placeholders, identifier_title_map))
65+
result_scope(metadata_join_sql(variable_placeholders, identifier_title_map))
6566
end
6667

67-
def result_scope(page_links, join_expression)
68-
page_links.joins(join_expression).select("wiki_page_links.*, metadata.title as title")
68+
def result_scope(join_expression)
69+
relation.joins(join_expression).select("wiki_page_links.*, metadata.title as title")
6970
end
7071

7172
def metadata_join_sql(variable_placeholders, identifier_title_map)

modules/wikis/lib/api/v3/page_links/work_package_wiki_page_links_api.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ module PageLinks
3434
class WorkPackageWikiPageLinksAPI < OpenProjectAPI
3535
helpers do
3636
def enrich_models_with_wiki_metadata(relation)
37-
Wikis::PageLinkMetadataService.call(relation)
37+
Wikis::PageLinkMetadataService.new(relation).call
3838
end
3939
end
4040

modules/wikis/spec/services/wikis/page_link_metadata_service_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ module Wikis
3838
shared_let(:provider) { create(:internal_wiki_provider) }
3939
shared_let(:page_links) { create_list(:relation_wiki_page_link, 3, provider:) }
4040

41-
subject(:service) { described_class }
41+
subject(:service) { described_class.new(relation) }
4242

4343
before do
4444
query_double = instance_double(Adapters::Providers::Internal::Queries::PageInfo)
@@ -58,15 +58,15 @@ module Wikis
5858
end
5959

6060
it "returns a new relation" do
61-
service_result = service.call(relation)
61+
service_result = service.call
6262

6363
expect(service_result).to be_success
6464
expect(service_result.errors).to be_empty
6565
expect(service_result.result).to be_an(ActiveRecord::Relation)
6666
end
6767

6868
it "adds the title attribute to the metadata association" do
69-
service_result = service.call(relation)
69+
service_result = service.call
7070
expect(service_result).to be_success
7171

7272
page_links = service_result.result

0 commit comments

Comments
 (0)