From 23d6303b49046534075f7d7b6933db799637433e Mon Sep 17 00:00:00 2001 From: miteruzo Date: Mon, 29 Dec 2025 07:02:02 +0900 Subject: [PATCH] #188 --- .../app/controllers/wiki_pages_controller.rb | 2 +- backend/app/models/wiki_page.rb | 2 + backend/app/models/wiki_revision.rb | 2 +- backend/app/services/wiki/commit.rb | 2 +- frontend/src/pages/wiki/WikiHistoryPage.tsx | 20 +++------- frontend/src/types.ts | 40 ++++++++++--------- 6 files changed, 32 insertions(+), 36 deletions(-) diff --git a/backend/app/controllers/wiki_pages_controller.rb b/backend/app/controllers/wiki_pages_controller.rb index 5be2a3c..4943fbf 100644 --- a/backend/app/controllers/wiki_pages_controller.rb +++ b/backend/app/controllers/wiki_pages_controller.rb @@ -72,7 +72,7 @@ class WikiPagesController < ApplicationController return head :unprocessable_entity if title.blank? || body.blank? - page = WikiPage.new(title:) + page = WikiPage.new(title:, created_user: current_user, updated_user: current_user) if page.save message = params[:message].presence diff --git a/backend/app/models/wiki_page.rb b/backend/app/models/wiki_page.rb index 04a3b2f..256d4df 100644 --- a/backend/app/models/wiki_page.rb +++ b/backend/app/models/wiki_page.rb @@ -3,6 +3,8 @@ require 'set' class WikiPage < ApplicationRecord has_many :wiki_revisions, dependent: :destroy + belongs_to :created_user, class_name: 'User' + belongs_to :updated_user, class_name: 'User' has_many :redirected_from_revisions, class_name: 'WikiRevision', diff --git a/backend/app/models/wiki_revision.rb b/backend/app/models/wiki_revision.rb index 687b113..da6ca7d 100644 --- a/backend/app/models/wiki_revision.rb +++ b/backend/app/models/wiki_revision.rb @@ -7,7 +7,7 @@ class WikiRevision < ApplicationRecord has_many :wiki_revision_lines, dependent: :delete_all has_many :wiki_lines, through: :wiki_revision_lines - enum kind: { content: 0, redirect: 1 } + enum :kind, { content: 0, redirect: 1 } validates :kind, presence: true validates :lines_count, numericality: { only_integer: true, greater_than_or_equal_to: 0 } diff --git a/backend/app/services/wiki/commit.rb b/backend/app/services/wiki/commit.rb index 5f1ccbb..c0be98a 100644 --- a/backend/app/services/wiki/commit.rb +++ b/backend/app/services/wiki/commit.rb @@ -112,7 +112,7 @@ module Wiki end if missing_rows.any? - WikiLine.upsert_all(missing_rows, unique_by: :index_wiki_lines_on_sha256) + WikiLine.upsert_all(missing_rows) id_by_sha = WikiLine.where(sha256: line_shas).pluck(:sha256, :id).to_h end diff --git a/frontend/src/pages/wiki/WikiHistoryPage.tsx b/frontend/src/pages/wiki/WikiHistoryPage.tsx index ba1d71b..000ce43 100644 --- a/frontend/src/pages/wiki/WikiHistoryPage.tsx +++ b/frontend/src/pages/wiki/WikiHistoryPage.tsx @@ -41,30 +41,20 @@ export default () => { {changes.map (change => ( - + - {change.changeType === 'update' && ( - + {change.pred != null && ( + 差分 )} - + {change.wikiPage.title} - {(() => { - switch (change.changeType) - { - case 'create': - return '新規' - case 'update': - return '更新' - case 'delete': - return '削除' - } - }) ()} + {change.pred == null ? '新規' : '更新'} diff --git a/frontend/src/types.ts b/frontend/src/types.ts index f78c85b..46cacce 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -59,29 +59,33 @@ export type User = { export type ViewFlagBehavior = typeof ViewFlagBehavior[keyof typeof ViewFlagBehavior] export type WikiPage = { - id: number - title: string - body: string - sha: string - pred?: string - succ?: string - updatedAt?: string } + id: number + title: string + createdUserId: number + updatedUserId: number + createdAt: string + updatedAt: string + body: string + revisionId: number + pred: number | null + succ: number | null } export type WikiPageChange = { - sha: string - pred?: string - succ?: string - wikiPage: WikiPage - user: User - changeType: string + revisionId: number + pred: number | null + succ: null + wikiPage: Pick + user: Pick + kind: 'content' | 'redirect' + message: string | null timestamp: string } export type WikiPageDiff = { - wikiPageId: number - title: string - olderSha: string - newerSha: string - diff: WikiPageDiffDiff[] } + wikiPageId: number + title: string + olderRevisionId: number | null + newerRevisionId: number | null + diff: WikiPageDiffDiff[] } export type WikiPageDiffDiff = { type: 'context' | 'added' | 'removed'