diff --git a/backend/app/controllers/wiki_assets_controller.rb b/backend/app/controllers/wiki_assets_controller.rb index eca800e..c3861c2 100644 --- a/backend/app/controllers/wiki_assets_controller.rb +++ b/backend/app/controllers/wiki_assets_controller.rb @@ -21,6 +21,7 @@ class WikiAssetsController < ApplicationController file = params[:file] return head :bad_request if file.blank? + asset = nil page.with_lock do no = page.next_asset_no alt_text = params[:alt_text].presence @@ -33,6 +34,6 @@ class WikiAssetsController < ApplicationController page.update!(next_asset_no: no + 1) end - render json: asset.as_json(methods: [:url]) + render json: asset.as_json(only: [:wiki_page_id, :no], methods: [:url]) end end diff --git a/backend/app/models/wiki_asset.rb b/backend/app/models/wiki_asset.rb index 52321cf..c772679 100644 --- a/backend/app/models/wiki_asset.rb +++ b/backend/app/models/wiki_asset.rb @@ -1,6 +1,4 @@ class WikiAsset < ApplicationRecord - self.primary_key = :wiki_page_id, :no - belongs_to :wiki_page belongs_to :created_by_user, class_name: 'User' diff --git a/backend/db/migrate/20260323192300_create_wiki_assets.rb b/backend/db/migrate/20260323192300_create_wiki_assets.rb index 1a4e875..97e0c43 100644 --- a/backend/db/migrate/20260323192300_create_wiki_assets.rb +++ b/backend/db/migrate/20260323192300_create_wiki_assets.rb @@ -1,6 +1,6 @@ class CreateWikiAssets < ActiveRecord::Migration[8.0] def change - create_table :wiki_assets, primary_key: [:wiki_page_id, :no] do |t| + create_table :wiki_assets do |t| t.references :wiki_page, null: false, foreign_key: true, index: false t.integer :no, null: false t.string :alt_text @@ -10,6 +10,7 @@ class CreateWikiAssets < ActiveRecord::Migration[8.0] end add_index :wiki_assets, [:wiki_page_id, :sha256], unique: true + add_index :wiki_assets, [:wiki_page_id, :no], unique: true add_column :wiki_pages, :next_asset_no, :integer, null: false, default: 1 end diff --git a/backend/db/schema.rb b/backend/db/schema.rb index 7dbc388..82e8fe2 100644 --- a/backend/db/schema.rb +++ b/backend/db/schema.rb @@ -239,7 +239,7 @@ ActiveRecord::Schema[8.0].define(version: 2026_03_23_192300) do t.datetime "updated_at", null: false end - create_table "wiki_assets", primary_key: ["wiki_page_id", "no"], charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t| + create_table "wiki_assets", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t| t.bigint "wiki_page_id", null: false t.integer "no", null: false t.string "alt_text" @@ -248,6 +248,7 @@ ActiveRecord::Schema[8.0].define(version: 2026_03_23_192300) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["created_by_user_id"], name: "index_wiki_assets_on_created_by_user_id" + t.index ["wiki_page_id", "no"], name: "index_wiki_assets_on_wiki_page_id_and_no", unique: true t.index ["wiki_page_id", "sha256"], name: "index_wiki_assets_on_wiki_page_id_and_sha256", unique: true end diff --git a/frontend/src/components/WikiEditForm.tsx b/frontend/src/components/WikiEditForm.tsx index 41556ee..c989622 100644 --- a/frontend/src/components/WikiEditForm.tsx +++ b/frontend/src/components/WikiEditForm.tsx @@ -39,7 +39,7 @@ export default (({ title: initTitle, body: initBody, onSubmit, id }: Props) => { formData, { headers: { 'Content-Type': 'multipart/form-data' } }) - return `{{img:${ asset.no }}}` + return asset.url } return ( diff --git a/frontend/src/components/WikiMarkdown.tsx b/frontend/src/components/WikiMarkdown.tsx index edb23e2..dc19c01 100644 --- a/frontend/src/components/WikiMarkdown.tsx +++ b/frontend/src/components/WikiMarkdown.tsx @@ -43,7 +43,7 @@ const makeComponents = (preview = false) => ( img: (({ src, alt }) => ( {alt)), + className="max-w-[240px] max-h-[320px]"/>)), } as const satisfies Components)