about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAkihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>2017-04-30 21:49:24 +0900
committerMatt Jankowski <mjankowski@thoughtbot.com>2017-04-30 08:49:24 -0400
commita6788662b09164cfbaf1cebe6c8abc5123452285 (patch)
tree695c32806c43416f16aea7dd73c507ed42799ca2
parent4a5f73c8aef7500a0efe7d800447e288674bf54a (diff)
Revert "Use PostgreSQL inheritance for blocks and mutes (#2520)" (#2634)
This reverts commit 5135d609b774b177d3d3894b176a822d86b73d3c.
-rw-r--r--app/models/account.rb4
-rw-r--r--db/migrate/20180428000000_create_block_mutes.rb19
-rw-r--r--db/schema.rb14
-rw-r--r--spec/lib/atom_serializer_spec.rb4
-rw-r--r--spec/models/account_spec.rb6
-rw-r--r--spec/models/status_spec.rb6
-rw-r--r--streaming/index.js2
7 files changed, 12 insertions, 43 deletions
diff --git a/app/models/account.rb b/app/models/account.rb
index 89710b66c..19f8ca365 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -87,11 +87,11 @@ class Account < ApplicationRecord
   end
 
   def block!(other_account)
-    block_relationships.where(target_account: other_account).first_or_create!(target_account: other_account, block: true)
+    block_relationships.where(target_account: other_account).first_or_create!(target_account: other_account)
   end
 
   def mute!(other_account)
-    mute_relationships.where(target_account: other_account).first_or_create!(target_account: other_account, block: false)
+    mute_relationships.where(target_account: other_account).first_or_create!(target_account: other_account)
   end
 
   def unfollow!(other_account)
diff --git a/db/migrate/20180428000000_create_block_mutes.rb b/db/migrate/20180428000000_create_block_mutes.rb
deleted file mode 100644
index 149c91a4d..000000000
--- a/db/migrate/20180428000000_create_block_mutes.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-class CreateBlockMutes < ActiveRecord::Migration[5.0]
-  def change
-    create_table "block_mutes", force: :casecade do |t|
-      t.integer  "account_id",        null: false
-      t.integer  "target_account_id", null: false
-      t.boolean  "block",             null: false
-      t.datetime "created_at",        null: false
-      t.datetime "updated_at",        null: false
-    end
-
-    add_column       :blocks, :block, :boolean, null: false
-    execute          "ALTER TABLE blocks ADD CONSTRAINT check_mutes_on_block CHECK(block = TRUE), INHERIT block_mutes"
-    Block.update_all block: true
-
-    add_column       :mutes, :block, :boolean, null: false
-    execute          "ALTER TABLE mutes ADD CONSTRAINT check_mutes_on_block CHECK(block = FALSE), INHERIT block_mutes"
-    Mute.update_all block: false
-  end
-end
diff --git a/db/schema.rb b/db/schema.rb
index ea948c429..66326f2e2 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: 20180428000000) do
+ActiveRecord::Schema.define(version: 20170425202925) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -54,23 +54,13 @@ ActiveRecord::Schema.define(version: 20180428000000) do
     t.index ["username", "domain"], name: "index_accounts_on_username_and_domain", unique: true, using: :btree
   end
 
-  create_table "block_mutes", force: :cascade, id: false do |t|
-    t.integer  "account_id",        null: false
-    t.integer  "target_account_id", null: false
-    t.boolean  "block",             null: false
-    t.datetime "created_at",        null: false
-    t.datetime "updated_at",        null: false
-  end
-
   create_table "blocks", force: :cascade do |t|
     t.integer  "account_id",        null: false
     t.integer  "target_account_id", null: false
-    t.boolean  "block",             null: false
     t.datetime "created_at",        null: false
     t.datetime "updated_at",        null: false
     t.index ["account_id", "target_account_id"], name: "index_blocks_on_account_id_and_target_account_id", unique: true, using: :btree
   end
-  execute   "ALTER TABLE blocks ADD CONSTRAINT check_blocks_on_block CHECK(block = TRUE), INHERIT block_mutes"
 
   create_table "domain_blocks", force: :cascade do |t|
     t.string   "domain",       default: "", null: false
@@ -147,12 +137,10 @@ ActiveRecord::Schema.define(version: 20180428000000) do
   create_table "mutes", force: :cascade do |t|
     t.integer  "account_id",        null: false
     t.integer  "target_account_id", null: false
-    t.boolean  "block",             null: false
     t.datetime "created_at",        null: false
     t.datetime "updated_at",        null: false
     t.index ["account_id", "target_account_id"], name: "index_mutes_on_account_id_and_target_account_id", unique: true, using: :btree
   end
-  execute   "ALTER TABLE mutes ADD CONSTRAINT check_mutes_on_block CHECK(block = FALSE), INHERIT block_mutes"
 
   create_table "notifications", force: :cascade do |t|
     t.integer  "account_id"
diff --git a/spec/lib/atom_serializer_spec.rb b/spec/lib/atom_serializer_spec.rb
index 345285a7a..cfca82a28 100644
--- a/spec/lib/atom_serializer_spec.rb
+++ b/spec/lib/atom_serializer_spec.rb
@@ -152,7 +152,7 @@ RSpec.describe AtomSerializer do
 
   describe '#block_salmon' do
     let(:xml) do
-      block = Fabricate(:block, account: author, target_account: receiver, block: true)
+      block = Fabricate(:block, account: author, target_account: receiver)
       xml   = AtomSerializer.render(AtomSerializer.new.block_salmon(block))
       block.destroy
       xml
@@ -171,7 +171,7 @@ RSpec.describe AtomSerializer do
 
   describe '#unblock_salmon' do
     let(:xml) do
-      block = Fabricate(:block, account: author, target_account: receiver, block: true)
+      block = Fabricate(:block, account: author, target_account: receiver)
       block.destroy
       xml = AtomSerializer.render(AtomSerializer.new.unblock_salmon(block))
       author.block!(receiver)
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index b4481aaed..157db633a 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -193,9 +193,9 @@ RSpec.describe Account, type: :model do
   describe '#excluded_from_timeline_account_ids' do
     it 'includes account ids of blockings, blocked_bys and mutes' do
       account = Fabricate(:account)
-      block = Fabricate(:block, account: account, block: true)
-      mute = Fabricate(:mute, account: account, block: false)
-      block_by = Fabricate(:block, target_account: account, block: true)
+      block = Fabricate(:block, account: account)
+      mute = Fabricate(:mute, account: account)
+      block_by = Fabricate(:block, target_account: account)
 
       results = account.excluded_from_timeline_account_ids
       expect(results.size).to eq 3
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 956b9b882..c553b052e 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -226,7 +226,7 @@ RSpec.describe Status, type: :model do
 
       it 'excludes statuses from accounts blocked by the account' do
         blocked = Fabricate(:account)
-        Fabricate(:block, account: @account, target_account: blocked, block: true)
+        Fabricate(:block, account: @account, target_account: blocked)
         blocked_status = Fabricate(:status, account: blocked)
 
         results = Status.as_public_timeline(@account)
@@ -235,7 +235,7 @@ RSpec.describe Status, type: :model do
 
       it 'excludes statuses from accounts who have blocked the account' do
         blocked = Fabricate(:account)
-        Fabricate(:block, account: blocked, target_account: @account, block: true)
+        Fabricate(:block, account: blocked, target_account: @account)
         blocked_status = Fabricate(:status, account: blocked)
 
         results = Status.as_public_timeline(@account)
@@ -244,7 +244,7 @@ RSpec.describe Status, type: :model do
 
       it 'excludes statuses from accounts muted by the account' do
         muted = Fabricate(:account)
-        Fabricate(:mute, account: @account, target_account: muted, block: false)
+        Fabricate(:mute, account: @account, target_account: muted)
         muted_status = Fabricate(:status, account: muted)
 
         results = Status.as_public_timeline(@account)
diff --git a/streaming/index.js b/streaming/index.js
index da8066ff3..3be844037 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -188,7 +188,7 @@ if (cluster.isMaster) {
           const unpackedPayload  = JSON.parse(payload)
           const targetAccountIds = [unpackedPayload.account.id].concat(unpackedPayload.mentions.map(item => item.id)).concat(unpackedPayload.reblog ? [unpackedPayload.reblog.account.id] : [])
 
-          client.query(`SELECT target_account_id FROM block_mutes WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 1)})`, [req.accountId].concat(targetAccountIds), (err, result) => {
+          client.query(`SELECT target_account_id FROM blocks WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 1)}) UNION SELECT target_account_id FROM mutes WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 1)})`, [req.accountId].concat(targetAccountIds), (err, result) => {
             done()
 
             if (err) {