このコミットが含まれているのは:
2026-10-18 13:56:03 +09:00
コミット bbee83e35b
21個のファイルの変更、468行の追加、236行の削除
+28
ファイルの表示
@@ -34,6 +34,34 @@ class WikiPagesController < ApplicationController
render json:
end
def autolink_candidates
locale = resolve_locale!
language = params.fetch(:language, locale.language_code)
return head :not_found unless language.is_a?(String)
target_locale =
if language == 'und'
locale
else
Locale.where(language_code: language, deprecated_at: nil,
code: Locale.codes.values).order(:code).first
end
return head :not_found unless target_locale
candidates = []
unless language == 'und'
names = TagDescription.joins(tag: :tag_names)
.where(language_code: language, tag_names: { language_code: language })
.pluck('tag_descriptions.tag_id', 'tag_descriptions.id', 'tag_names.name')
candidates = names.map do |tag_id, description_id, name|
WikiPageRepr.autolink_tag(target_locale, tag_id:, description_id:, name:)
end
end
candidates.concat(TagGroup.order(:id).pluck(:id, :name).map do |id, name|
WikiPageRepr.autolink_group(target_locale, id:, name:, language:)
end)
render json: candidates
end
def show
locale = resolve_locale!
tag_description = TagDescription.find_by(id: params[:id], language_code: locale.language_code)
+22
ファイルの表示
@@ -9,6 +9,8 @@ module WikiPageRepr
{ 'id' => description.id,
'resource_type' => 'tag_description',
'tag_id' => tag.id,
'language_code' => description.language_code,
'tag_name_id' => tag.tag_name(locale.language_code)&.id,
'body' => description.body,
'created_user_id' => description.created_by_user_id,
@@ -24,4 +26,24 @@ module WikiPageRepr
def tag_group tag_group
TagGroupRepr.tag_group(tag_group).merge('resource_type' => 'tag_group')
end
def autolink_tag locale, tag_id:, description_id:, name:
{ resource_type: 'tag_description',
resource_id: description_id,
tag_id:,
tag_description_id: description_id,
name:,
language_code: locale.language_code,
locale_code: locale.code_before_type_cast }
end
def autolink_group locale, id:, name:, language:
{ resource_type: 'tag_group',
resource_id: id,
tag_id: nil,
tag_description_id: nil,
name: "#{ TagGroupRepr::PREFIX }#{ name }",
language_code: language,
locale_code: locale.code_before_type_cast }
end
end
+1
ファイルの表示
@@ -45,6 +45,7 @@ Rails.application.routes.draw do
collection do
get :search, action: :index
get :changes
get :autolink_candidates
scope :title do
get ':title/exists', action: :exists_by_title