Add KeywordMute model.

Gist of the proposed keyword mute implementation:

Keyword mutes are represented server-side as one keyword per record.
For each account, there exists a keyword regex that is generated as one
big alternation of all keywords.  This regex is cached (in Redis, I
guess) so we can quickly get it when filtering in FeedManager.
master
David Yip 7 years ago
parent d589dd7cd0
commit 9093e2de7a
  1. 13
      app/models/keyword_mute.rb
  2. 11
      db/migrate/20171009222537_create_keyword_mutes.rb
  3. 9
      db/schema.rb
  4. 2
      spec/fabricators/keyword_mute_fabricator.rb
  5. 5
      spec/models/keyword_mute_spec.rb

@ -0,0 +1,13 @@
# == Schema Information
#
# Table name: keyword_mutes
#
# id :integer not null, primary key
# account_id :integer not null
# keyword :string not null
# created_at :datetime not null
# updated_at :datetime not null
#
class KeywordMute < ApplicationRecord
end

@ -0,0 +1,11 @@
class CreateKeywordMutes < ActiveRecord::Migration[5.1]
def change
create_table :keyword_mutes do |t|
t.references :account, null: false
t.string :keyword, null: false
t.timestamps
end
add_foreign_key :keyword_mutes, :accounts, on_delete: :cascade
end
end

@ -167,6 +167,14 @@ ActiveRecord::Schema.define(version: 20171010025614) do
t.bigint "account_id", null: false
end
create_table "keyword_mutes", force: :cascade do |t|
t.bigint "account_id", null: false
t.string "keyword", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["account_id"], name: "index_keyword_mutes_on_account_id"
end
create_table "media_attachments", force: :cascade do |t|
t.bigint "status_id"
t.string "file_file_name"
@ -473,6 +481,7 @@ ActiveRecord::Schema.define(version: 20171010025614) do
add_foreign_key "follows", "accounts", column: "target_account_id", name: "fk_745ca29eac", on_delete: :cascade
add_foreign_key "follows", "accounts", name: "fk_32ed1b5560", on_delete: :cascade
add_foreign_key "imports", "accounts", name: "fk_6db1b6e408", on_delete: :cascade
add_foreign_key "keyword_mutes", "accounts", on_delete: :cascade
add_foreign_key "media_attachments", "accounts", name: "fk_96dd81e81b", on_delete: :nullify
add_foreign_key "media_attachments", "statuses", on_delete: :nullify
add_foreign_key "mentions", "accounts", name: "fk_970d43f9d1", on_delete: :cascade

@ -0,0 +1,2 @@
Fabricator(:keyword_mute) do
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe KeywordMute, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end
Loading…
Cancel
Save