nas/db/migrate/20240218233621_create_ng_rules.rb
KMY(雪あすか) 7d96d5828e
Add: #600 NGルール (#602)
* Wip

* Wip

* Wip: History

* Wip: テストコード作成

* Fix test

* Wip

* Wip

* Wip

* Fix test

* Wip

* Wip

* Wip

* Wip

* なんとか完成、これから動作確認

* spell miss

* Change ng rule timings

* Fix test

* Wip

* Fix test

* Wip

* Fix form

* 表示まわりの改善
2024-02-26 17:45:41 +09:00

64 lines
3 KiB
Ruby

# frozen_string_literal: true
class CreateNgRules < ActiveRecord::Migration[7.1]
def change
create_table :ng_rules do |t|
t.string :title, null: false, default: ''
t.boolean :available, null: false, default: true
t.boolean :record_history_also_local, null: false, default: true
t.string :account_domain, null: false, default: ''
t.string :account_username, null: false, default: ''
t.string :account_display_name, null: false, default: ''
t.string :account_note, null: false, default: ''
t.string :account_field_name, null: false, default: ''
t.string :account_field_value, null: false, default: ''
t.integer :account_avatar_state, null: false, default: 0
t.integer :account_header_state, null: false, default: 0
t.boolean :account_include_local, null: false, default: true
t.boolean :account_allow_followed_by_local, null: false, default: false
t.string :status_spoiler_text, null: false, default: ''
t.string :status_text, null: false, default: ''
t.string :status_tag, null: false, default: ''
t.string :status_visibility, null: false, default: [], array: true
t.string :status_searchability, null: false, default: [], array: true
t.integer :status_media_state, null: false, default: 0
t.integer :status_sensitive_state, null: false, default: 0
t.integer :status_cw_state, null: false, default: 0
t.integer :status_poll_state, null: false, default: 0
t.integer :status_quote_state, null: false, default: 0
t.integer :status_reply_state, null: false, default: 0
t.integer :status_mention_state, null: false, default: 0
t.integer :status_reference_state, null: false, default: 0
t.integer :status_tag_threshold, null: false, default: -1
t.integer :status_media_threshold, null: false, default: -1
t.integer :status_poll_threshold, null: false, default: -1
t.integer :status_mention_threshold, null: false, default: -1
t.boolean :status_allow_follower_mention, null: false, default: true
t.integer :status_reference_threshold, null: false, default: -1
t.string :reaction_type, null: false, default: [], array: true
t.boolean :reaction_allow_follower, null: false, default: true
t.string :emoji_reaction_name, null: false, default: ''
t.string :emoji_reaction_origin_domain, null: false, default: ''
t.datetime :expires_at
t.timestamps
end
create_table :ng_rule_histories do |t|
t.belongs_to :ng_rule, null: false, foreign_key: { on_cascade: :delete }, index: false
t.belongs_to :account, foreign_key: { on_cascade: :nullify }, index: false
t.string :text
t.string :uri, index: true
t.integer :reason, null: false
t.integer :reason_action, null: false
t.boolean :local, null: false, default: true
t.boolean :hidden, null: false, default: false
t.jsonb :data
t.timestamps
end
add_index :ng_rule_histories, [:ng_rule_id, :account_id]
add_index :ng_rule_histories, :created_at
end
end