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
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 |
@ -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