diff --git a/app/models/mention.rb b/app/models/mention.rb index 32c4cc235..2bbb09a0e 100644 --- a/app/models/mention.rb +++ b/app/models/mention.rb @@ -2,9 +2,7 @@ class Mention < ApplicationRecord belongs_to :user belongs_to :mentionable, polymorphic: true - validates :user_id, presence: true, - uniqueness: { scope: %i[mentionable_id - mentionable_type] } + validates :user_id, presence: true, uniqueness: { scope: %i[mentionable_id mentionable_type] } validates :mentionable_id, presence: true validates :mentionable_type, presence: true validate :permission diff --git a/db/migrate/20200521103848_add_unique_index_to_reactions_user_id.rb b/db/migrate/20200521103848_add_unique_index_to_reactions_user_id.rb new file mode 100644 index 000000000..950c3a02b --- /dev/null +++ b/db/migrate/20200521103848_add_unique_index_to_reactions_user_id.rb @@ -0,0 +1,13 @@ +class AddUniqueIndexToReactionsUserId < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + add_index( + :reactions, + %i[user_id reactable_id reactable_type category], + unique: true, + algorithm: :concurrently, + name: :index_reactions_on_user_id_reactable_id_reactable_type_category + ) + end +end diff --git a/db/migrate/20200521103911_add_unique_index_to_notification_subscriptions_user_id.rb b/db/migrate/20200521103911_add_unique_index_to_notification_subscriptions_user_id.rb new file mode 100644 index 000000000..c766e4656 --- /dev/null +++ b/db/migrate/20200521103911_add_unique_index_to_notification_subscriptions_user_id.rb @@ -0,0 +1,13 @@ +class AddUniqueIndexToNotificationSubscriptionsUserId < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + add_index( + :notification_subscriptions, + %i[user_id notifiable_type notifiable_id], + unique: true, + algorithm: :concurrently, + name: :idx_notification_subs_on_user_id_notifiable_type_notifiable_id + ) + end +end diff --git a/db/migrate/20200521103935_add_unique_index_to_mentions_user_id.rb b/db/migrate/20200521103935_add_unique_index_to_mentions_user_id.rb new file mode 100644 index 000000000..72addeea2 --- /dev/null +++ b/db/migrate/20200521103935_add_unique_index_to_mentions_user_id.rb @@ -0,0 +1,13 @@ +class AddUniqueIndexToMentionsUserId < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + add_index( + :mentions, + %i[user_id mentionable_id mentionable_type], + unique: true, + algorithm: :concurrently, + name: :index_mentions_on_user_id_and_mentionable_id_mentionable_type + ) + end +end diff --git a/db/migrate/20200521103952_add_unique_index_to_html_variants_name.rb b/db/migrate/20200521103952_add_unique_index_to_html_variants_name.rb new file mode 100644 index 000000000..85ac2f93f --- /dev/null +++ b/db/migrate/20200521103952_add_unique_index_to_html_variants_name.rb @@ -0,0 +1,7 @@ +class AddUniqueIndexToHtmlVariantsName < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + add_index :html_variants, :name, unique: true, algorithm: :concurrently + end +end diff --git a/db/schema.rb b/db/schema.rb index ea2742dc2..38f99ab6c 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.define(version: 2020_05_20_092951) do +ActiveRecord::Schema.define(version: 2020_05_21_103952) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -574,6 +574,7 @@ ActiveRecord::Schema.define(version: 2020_05_20_092951) do t.string "target_tag" t.datetime "updated_at", null: false t.integer "user_id" + t.index ["name"], name: "index_html_variants_on_name", unique: true end create_table "identities", id: :serial, force: :cascade do |t| @@ -595,6 +596,7 @@ ActiveRecord::Schema.define(version: 2020_05_20_092951) do t.string "mentionable_type" t.datetime "updated_at", null: false t.integer "user_id" + t.index ["user_id", "mentionable_id", "mentionable_type"], name: "index_mentions_on_user_id_and_mentionable_id_mentionable_type", unique: true end create_table "messages", force: :cascade do |t| @@ -628,6 +630,7 @@ ActiveRecord::Schema.define(version: 2020_05_20_092951) do t.datetime "updated_at", null: false t.bigint "user_id", null: false t.index ["notifiable_id", "notifiable_type", "config"], name: "index_notification_subscriptions_on_notifiable_and_config" + t.index ["user_id", "notifiable_type", "notifiable_id"], name: "idx_notification_subs_on_user_id_notifiable_type_notifiable_id", unique: true end create_table "notifications", id: :serial, force: :cascade do |t| @@ -927,6 +930,7 @@ ActiveRecord::Schema.define(version: 2020_05_20_092951) do t.index ["reactable_id", "reactable_type"], name: "index_reactions_on_reactable_id_and_reactable_type" t.index ["reactable_id"], name: "index_reactions_on_reactable_id" t.index ["reactable_type"], name: "index_reactions_on_reactable_type" + t.index ["user_id", "reactable_id", "reactable_type", "category"], name: "index_reactions_on_user_id_reactable_id_reactable_type_category", unique: true t.index ["user_id"], name: "index_reactions_on_user_id" end