68 lines
2.1 KiB
Ruby
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 IN (
|
|
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
|