Skip to content

Commit e4664da

Browse files
committed
Address feedback, move provider handling to use universal identifiers
1 parent 56a251b commit e4664da

9 files changed

Lines changed: 28 additions & 10 deletions

File tree

modules/wikis/app/models/queries/wikis/page_links/filter/provider_filter.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,13 @@ def human_name
4242
end
4343

4444
def allowed_values
45-
::Wikis::Provider.pluck(:id).map { |id| [id, id.to_s] }
45+
::Wikis::Provider.enabled.pluck(:universal_identifier).map { |uid| [uid, uid.to_s] }
4646
end
4747

48+
def left_outer_joins = :provider
49+
4850
def where
49-
operator_strategy.sql_for_field(values, ::Wikis::PageLink.table_name, "provider_id")
51+
operator_strategy.sql_for_field(values, ::Wikis::Provider.table_name, "universal_identifier")
5052
end
5153
end
5254
end

modules/wikis/app/models/queries/wikis/page_links/page_link_query.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ class PageLinkQuery
3838
def self.model
3939
@model ||= ::Wikis::PageLink
4040
end
41+
42+
def default_scope
43+
::Wikis::PageLink.includes(:provider).all
44+
end
4145
end
4246
end
4347
end

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ def initialize(page_links)
3636
end
3737

3838
def call
39-
metadata = @page_links.group_by(&:provider).filter_map do |provider, pages|
40-
result = provider.resolve("queries.pages").call(page_identifiers: pages.map(&:identifier))
39+
metadata = @page_links.group_by(&:provider).filter_map do |provider, links|
40+
result = provider.resolve("queries.pages").call(page_identifiers: links.map(&:identifier))
4141
result.value_or { add_wiki_error(it) and next }
4242
end
4343

modules/wikis/config/locales/en.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
en:
33
activerecord:
44
attributes:
5+
wikis/page_link:
6+
provider: Wiki Provider
57
wikis/xwiki_provider:
68
authentication_method: Authentication method
79
authentication_methods:

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ class PageLinkRepresenter < Decorators::Single
6161
}
6262
end
6363

64-
associated_resource :provider, v3_path: :wiki_provider
64+
associated_resource :provider, v3_path: :wiki_provider, link: ->(*) {
65+
{ href: api_v3_paths.wiki_provider(represented.provider.universal_identifier), title: represented.provider.name }
66+
}
6567

6668
# TODO: Make this truly polymorphic - @mereghost 2026-04-13
6769
associated_resource :linkable,

modules/wikis/lib/api/v3/providers/provider_representer.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ class ProviderRepresenter < Decorators::Single
3535
include Decorators::LinkedResource
3636
include Decorators::DateProperty
3737

38-
property :id
38+
property :universal_identifier
3939
property :name
4040

4141
date_time_property :created_at
4242
date_time_property :updated_at
4343

44-
self_link(path: :wiki_provider)
44+
self_link(path: :wiki_provider, id_attribute: :universal_identifier)
4545
end
4646
end
4747
end

modules/wikis/spec/lib/api/v3/page_links/page_link_representer_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ module PageLinks
6060
describe "provider" do
6161
it_behaves_like "has a titled link" do
6262
let(:link) { "provider" }
63-
let(:href) { "/api/v3/wiki_providers/#{represented.provider_id}" }
63+
let(:href) { "/api/v3/wiki_providers/#{represented.provider.universal_identifier}" }
6464
let(:title) { represented.provider.name }
6565
end
6666
end

modules/wikis/spec/lib/api/v3/providers/provider_representer_spec.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,21 @@ module Providers
4848
describe "self" do
4949
it_behaves_like "has a titled link" do
5050
let(:link) { "self" }
51-
let(:href) { "/api/v3/wiki_providers/#{represented.id}" }
51+
let(:href) { "/api/v3/wiki_providers/#{represented.universal_identifier}" }
5252
let(:title) { represented.name }
5353
end
5454
end
5555
end
5656

5757
describe "properties" do
58+
it_behaves_like "property", :name do
59+
let(:value) { represented.name }
60+
end
61+
62+
it_behaves_like "property", :universalIdentifier do
63+
let(:value) { represented.universal_identifier }
64+
end
65+
5866
it_behaves_like "datetime property", :createdAt do
5967
let(:value) { represented.created_at }
6068
end

modules/wikis/spec/requests/api/v3/page_links/page_links_api_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
end
6060

6161
context "when filtered by provider" do
62-
let(:filter) { [{ provider: { operator: "=", values: [internal_wiki.id] } }] }
62+
let(:filter) { [{ provider: { operator: "=", values: [internal_wiki.universal_identifier] } }] }
6363

6464
before do
6565
create_list(:relation_wiki_page_link, 3, provider: create(:xwiki_provider), linkable: work_package)

0 commit comments

Comments
 (0)