2018-03-10 10:15:56 +01:00
|
|
|
class ForumAddIsLocked < ActiveRecord::Migration[5.1]
|
2010-04-20 23:05:11 +00:00
|
|
|
def self.up
|
|
|
|
transaction do
|
2024-01-08 19:39:01 +09:00
|
|
|
add_column :forum_posts, :is_locked, :boolean, null: false, default: false
|
2010-04-20 23:05:11 +00:00
|
|
|
execute "alter table users add column last_forum_topic_read_at timestamp not null default '1960-01-01'"
|
|
|
|
drop_table :forum_posts_user_views
|
|
|
|
add_index :forum_posts, :updated_at
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.down
|
|
|
|
transaction do
|
|
|
|
remove_column :forum_posts, :is_locked
|
|
|
|
remove_column :users, :last_forum_topic_read_at
|
|
|
|
remove_index :forum_posts, :updated_at
|
|
|
|
execute <<-EOS
|
2014-11-08 23:02:46 +09:00
|
|
|
CREATE TABLE forum_posts_user_views (
|
|
|
|
id serial primary key,
|
|
|
|
forum_post_id INTEGER NOT NULL REFERENCES forum_posts ON DELETE CASCADE,
|
|
|
|
user_id INTEGER NOT NULL REFERENCES users ON DELETE CASCADE,
|
|
|
|
last_viewed_at TIMESTAMP NOT NULL
|
|
|
|
)
|
|
|
|
EOS
|
2010-04-20 23:05:11 +00:00
|
|
|
|
2014-11-08 23:02:46 +09:00
|
|
|
execute "CREATE INDEX forum_posts_user_views__forum_post_id__idx ON forum_posts_user_views (forum_post_id)"
|
|
|
|
execute "CREATE INDEX forum_posts_user_views__user_id__idx ON forum_posts_user_views (user_id)"
|
|
|
|
execute "ALTER TABLE forum_posts_user_views ADD CONSTRAINT forum_posts_user_views__unique_forum_post_id_user_id UNIQUE (forum_post_id, user_id)"
|
2014-08-23 20:05:52 +09:00
|
|
|
end
|
2010-04-20 23:05:11 +00:00
|
|
|
end
|
|
|
|
end
|