discourse/db/migrate/20190227210035_add_missing_topic_id_site_settings.rb

68 lines
2.1 KiB
Ruby

class AddMissingTopicIdSiteSettings < ActiveRecord::Migration[5.2]
def up
# Welcome Topic
execute <<~SQL
INSERT INTO site_settings(name, data_type, value, created_at, updated_at)
SELECT 'welcome_topic_id', 3, topic_id, created_at, updated_at
FROM topic_custom_fields
WHERE name = 'is_welcome_topic' AND value = 'true' AND NOT EXISTS(
SELECT 1
FROM site_settings
WHERE name = 'welcome_topic_id'
)
LIMIT 1
SQL
execute <<~SQL
DELETE FROM topic_custom_fields
WHERE name = 'is_welcome_topic' AND value = 'true'
SQL
# Lounge Welcome Topic
execute <<~SQL
INSERT INTO site_settings(name, data_type, value, created_at, updated_at)
SELECT 'lounge_welcome_topic_id', 3, id, created_at, updated_at
FROM topics
WHERE title = 'Welcome to the Lounge' AND NOT EXISTS(
SELECT 1
FROM site_settings
WHERE name = 'lounge_welcome_topic_id'
) AND category_id = (
SELECT value::INT
FROM site_settings
WHERE name = 'lounge_category_id'
)
ORDER BY created_at
LIMIT 1
SQL
# Admin Quick Start Guide
execute <<~SQL
INSERT INTO site_settings(name, data_type, value, created_at, updated_at)
SELECT 'admin_quick_start_topic_id', 3, id, created_at, updated_at
FROM topics
WHERE title IN ('READ ME FIRST: Admin Quick Start Guide', 'READ ME FIRST: Getting Started') AND NOT EXISTS(
SELECT 1
FROM site_settings
WHERE name = 'admin_quick_start_topic_id'
)
ORDER BY created_at
LIMIT 1
SQL
end
def down
execute <<~SQL
INSERT INTO topic_custom_fields(topic_id, name, value, created_at, updated_at)
SELECT value::INTEGER, 'is_welcome_topic', 'true', created_at, updated_at
FROM site_settings
WHERE name = 'welcome_topic_id'
SQL
execute <<~SQL
DELETE FROM site_settings
WHERE name IN ('welcome_topic_id', 'lounge_welcome_topic_id', 'admin_quick_start_topic_id')
SQL
end
end