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.
This commit is contained in:
parent
d589dd7cd0
commit
9093e2de7a
|
@ -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
|
t.bigint "account_id", null: false
|
||||||
end
|
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|
|
create_table "media_attachments", force: :cascade do |t|
|
||||||
t.bigint "status_id"
|
t.bigint "status_id"
|
||||||
t.string "file_file_name"
|
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", column: "target_account_id", name: "fk_745ca29eac", on_delete: :cascade
|
||||||
add_foreign_key "follows", "accounts", name: "fk_32ed1b5560", 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 "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", "accounts", name: "fk_96dd81e81b", on_delete: :nullify
|
||||||
add_foreign_key "media_attachments", "statuses", on_delete: :nullify
|
add_foreign_key "media_attachments", "statuses", on_delete: :nullify
|
||||||
add_foreign_key "mentions", "accounts", name: "fk_970d43f9d1", on_delete: :cascade
|
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…
Reference in New Issue