diff --git a/backend/db/migrate/20251210123200_add_unique_index_to_tag_implications.rb b/backend/db/migrate/20251210123200_add_unique_index_to_tag_implications.rb index 0118f6c..681c1b5 100644 --- a/backend/db/migrate/20251210123200_add_unique_index_to_tag_implications.rb +++ b/backend/db/migrate/20251210123200_add_unique_index_to_tag_implications.rb @@ -1,7 +1,27 @@ class AddUniqueIndexToTagImplications < ActiveRecord::Migration[8.0] - def change + def up + execute <<~SQL + DELETE + ti1 + FROM + tag_implications ti1 + INNER JOIN + tag_implications ti2 + ON + ti1.tag_id = ti2.tag_id + AND ti1.parent_tag_id = ti2.parent_tag_id + AND ti1.id > ti2.id + ; + SQL + add_index :tag_implications, [:tag_id, :parent_tag_id], unique: true, name: 'index_tag_implications_on_tag_id_and_parent_tag_id' end + + def down + # NOTE: 重複削除は復元されなぃ. + remove_index :tag_implications, + name: 'index_tag_implications_on_tag_id_and_parent_tag_id' + end end diff --git a/frontend/src/components/TagDetailSidebar.tsx b/frontend/src/components/TagDetailSidebar.tsx index 6fdcbad..da2c3b8 100644 --- a/frontend/src/components/TagDetailSidebar.tsx +++ b/frontend/src/components/TagDetailSidebar.tsx @@ -29,7 +29,7 @@ const renderTagTree = ( return [self, ...(tag.children ?.sort ((a, b) => a.name < b.name ? -1 : 1) - .flatMap (child => renderTagTree (child, nestLevel + 2, key)) ?? [])] + .flatMap (child => renderTagTree (child, nestLevel + 1, key)) ?? [])] }