From 1fb5cb1e679d0df4a64effd3edaeb915d2dc539d Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Thu, 26 Mar 2026 11:17:08 +0100 Subject: [PATCH] Add unique indexes for Collection(Item) URIs (#38409) --- ...1755_add_unique_indexes_to_collections_and_items.rb | 10 ++++++++++ db/schema.rb | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20260325151755_add_unique_indexes_to_collections_and_items.rb diff --git a/db/migrate/20260325151755_add_unique_indexes_to_collections_and_items.rb b/db/migrate/20260325151755_add_unique_indexes_to_collections_and_items.rb new file mode 100644 index 0000000000..df8604ebf1 --- /dev/null +++ b/db/migrate/20260325151755_add_unique_indexes_to_collections_and_items.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddUniqueIndexesToCollectionsAndItems < ActiveRecord::Migration[8.1] + disable_ddl_transaction! + + def change + add_index :collections, :uri, unique: true, where: 'uri IS NOT NULL', algorithm: :concurrently + add_index :collection_items, :uri, unique: true, where: 'uri IS NOT NULL', algorithm: :concurrently + end +end diff --git a/db/schema.rb b/db/schema.rb index 1a839c2493..878ddd9e42 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.1].define(version: 2026_03_23_105645) do +ActiveRecord::Schema[8.1].define(version: 2026_03_25_151755) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -374,6 +374,7 @@ ActiveRecord::Schema[8.1].define(version: 2026_03_23_105645) do t.index ["approval_uri"], name: "index_collection_items_on_approval_uri", unique: true, where: "(approval_uri IS NOT NULL)" t.index ["collection_id"], name: "index_collection_items_on_collection_id" t.index ["object_uri"], name: "index_collection_items_on_object_uri", unique: true, where: "(activity_uri IS NOT NULL)" + t.index ["uri"], name: "index_collection_items_on_uri", unique: true, where: "(uri IS NOT NULL)" end create_table "collection_reports", force: :cascade do |t| @@ -402,6 +403,7 @@ ActiveRecord::Schema[8.1].define(version: 2026_03_23_105645) do t.string "uri" t.index ["account_id"], name: "index_collections_on_account_id" t.index ["tag_id"], name: "index_collections_on_tag_id" + t.index ["uri"], name: "index_collections_on_uri", unique: true, where: "(uri IS NOT NULL)" end create_table "conversation_mutes", force: :cascade do |t|