Browse Source

#45 API ぼちぼち

#23
みてるぞ 1 month ago
parent
commit
c6f7e8a696
5 changed files with 30 additions and 1 deletions
  1. +18
    -0
      backend/app/controllers/wiki_pages_controller.rb
  2. +1
    -0
      backend/config/routes.rb
  3. +2
    -0
      frontend/src/App.tsx
  4. +1
    -1
      frontend/src/components/TopNav.tsx
  5. +8
    -0
      frontend/src/pages/WikiHistoryPage.tsx

+ 18
- 0
backend/app/controllers/wiki_pages_controller.rb View File

@@ -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
- 0
backend/config/routes.rb 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
- 0
frontend/src/App.tsx 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
frontend/src/components/TopNav.tsx 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
- 0
frontend/src/pages/WikiHistoryPage.tsx View File

@@ -0,0 +1,8 @@
import MainArea from '@/components/layout/MainArea'


export default () => {
return (
<MainArea>
</MainArea>)
}

Loading…
Cancel
Save