#45 API ぼちぼち

This commit is contained in:
2025-06-18 06:20:51 +09:00
parent ceeefa9b7c
commit c6f7e8a696
5 changed files with 30 additions and 1 deletions
@@ -49,4 +49,22 @@ class WikiPagesController < ApplicationController
render json: q.limit(20) render json: q.limit(20)
end end
def changes
id = params[:id]
log = id.present? ? wiki.page("#{ id }.md").versions : wiki.repo.log('main', nil, max_count: 50)
render json: log.map { |commit|
{ sha: commit.id,
author: commit.author.name,
message: commit.message,
timestamp: commit.authored_date } }
end
private
WIKI_PATH = Rails.root.join('wiki').to_s
def wiki
@wiki ||= Gollum::Wiki.new(WIKI_PATH)
end
end end
+1
View File
@@ -6,6 +6,7 @@ Rails.application.routes.draw do
get 'preview/thumbnail', to: 'preview#thumbnail' get 'preview/thumbnail', to: 'preview#thumbnail'
get 'wiki/title/:title', to: 'wiki_pages#show_by_title' get 'wiki/title/:title', to: 'wiki_pages#show_by_title'
get 'wiki/search', to: 'wiki_pages#search' get 'wiki/search', to: 'wiki_pages#search'
get 'wiki/changes', to: 'wiki_pages#changes'
get 'wiki/:id', to: 'wiki_pages#show' get 'wiki/:id', to: 'wiki_pages#show'
post 'wiki', to: 'wiki_pages#create' post 'wiki', to: 'wiki_pages#create'
put 'wiki/:id', to: 'wiki_pages#update' put 'wiki/:id', to: 'wiki_pages#update'
+2
View File
@@ -11,6 +11,7 @@ import WikiPage from '@/pages/WikiPage'
import WikiNewPage from '@/pages/WikiNewPage' import WikiNewPage from '@/pages/WikiNewPage'
import WikiEditPage from '@/pages/WikiEditPage' import WikiEditPage from '@/pages/WikiEditPage'
import WikiDetailPage from '@/pages/WikiDetailPage' import WikiDetailPage from '@/pages/WikiDetailPage'
import WikiHistoryPage from '@/pages/WikiHistoryPage'
import { API_BASE_URL } from '@/config' import { API_BASE_URL } from '@/config'
import axios from 'axios' import axios from 'axios'
import { Toaster } from '@/components/ui/toaster' import { Toaster } from '@/components/ui/toaster'
@@ -66,6 +67,7 @@ export default () => {
<Route path="/wiki/:name" element={<WikiDetailPage />} /> <Route path="/wiki/:name" element={<WikiDetailPage />} />
<Route path="/wiki/new" element={<WikiNewPage />} /> <Route path="/wiki/new" element={<WikiNewPage />} />
<Route path="/wiki/:id/edit" element={<WikiEditPage />} /> <Route path="/wiki/:id/edit" element={<WikiEditPage />} />
<Route path="/wiki/changes" element={<WikiHistoryPage />} />
</Routes> </Routes>
</div> </div>
</div> </div>
+1 -1
View File
@@ -130,7 +130,7 @@ const TopNav: React.FC = ({ user, setUser }: Props) => {
<> <>
<Separator /> <Separator />
<Link to={`/posts?tags=${ location.pathname.split ('/')[2] }`} className={subClass}>稿</Link> <Link to={`/posts?tags=${ location.pathname.split ('/')[2] }`} className={subClass}>稿</Link>
<Link to={`/wiki/${ wikiId || location.pathname.split ('/')[2] }/history`} className={subClass}></Link> <Link to={`/wiki/changes?id=${ wikiId }`} className={subClass}></Link>
<Link to={`/wiki/${ wikiId || location.pathname.split ('/')[2] }/edit`} className={subClass}></Link> <Link to={`/wiki/${ wikiId || location.pathname.split ('/')[2] }/edit`} className={subClass}></Link>
</>} </>}
</div>) </div>)
+8
View File
@@ -0,0 +1,8 @@
import MainArea from '@/components/layout/MainArea'
export default () => {
return (
<MainArea>
</MainArea>)
}