This commit is contained in:
2025-06-25 02:52:51 +09:00
parent 5afee2f344
commit 6e6ee73857
7 changed files with 115 additions and 33 deletions
@@ -1,25 +1,10 @@
class WikiPagesController < ApplicationController
def show
wiki_page = WikiPage.find(params[:id])
return head :not_found unless wiki_page
render json: wiki_page.as_json.merge(body: wiki_page.body)
render_wiki_page_or_404 WikiPage.find(params[:id])
end
def show_by_title
title = params[:title]
version = params[:version].presence
wiki_page = WikiPage.find_by(title:)
return head :not_found unless wiki_page
wiki_page.sha = version
body = wiki_page.body
sha = wiki_page.sha
pred = wiki_page.pred
succ = wiki_page.succ
render json: wiki_page.as_json.merge(body:, sha:, pred:, succ:)
render_wiki_page_or_404 WikiPage.find_by(title: params[:title])
end
def diff
@@ -117,4 +102,16 @@ class WikiPagesController < ApplicationController
def wiki
@wiki ||= Gollum::Wiki.new(WIKI_PATH)
end
def render_wiki_page_or_404 wiki_page
return head :not_found unless wiki_page
wiki_page.sha = params[:version].presence
body = wiki_page.body
sha = wiki_page.sha
pred = wiki_page.pred
succ = wiki_page.succ
render json: wiki_page.as_json.merge(body:, sha:, pred:, succ:)
end
end
+5
View File
@@ -20,6 +20,7 @@ class WikiPage < ApplicationRecord
idx = vers.find_index { |ver| ver.id == @sha }
@pred = vers[idx + 1]&.id
@succ = idx.positive? ? vers[idx - 1].id : nil
@updated_at = vers[idx].authored_date
@sha
end
@@ -35,6 +36,10 @@ class WikiPage < ApplicationRecord
@succ
end
def updated_at
@updated_at
end
def body
sha = nil unless @page
@page&.raw_data&.force_encoding('UTF-8')