# frozen_string_literal: true

class PopulateCategorySettings < ActiveRecord::Migration[7.0]
  def up
    execute(<<~SQL)
      INSERT INTO
        category_settings(
          category_id,
          require_topic_approval,
          require_reply_approval,
          num_auto_bump_daily,
          created_at,
          updated_at
        )
      SELECT
        category_id,
        MAX(
          CASE WHEN (name = 'require_topic_approval')
          THEN NULLIF(value, '') ELSE NULL END
        )::boolean AS require_topic_approval,
        MAX(
          CASE WHEN (name = 'require_reply_approval')
          THEN NULLIF(value, '') ELSE NULL END
        )::boolean AS require_reply_approval,
        MAX(
          CASE WHEN (name = 'num_auto_bump_daily')
          THEN NULLIF(value, '') ELSE NULL END
        )::integer AS num_auto_bump_daily,
        NOW() AS created_at,
        NOW() AS updated_at
      FROM category_custom_fields
      WHERE name IN (
        'require_topic_approval',
        'require_reply_approval',
        'num_auto_bump_daily'
      )
      GROUP BY category_id;
    SQL
  end

  def down
    execute(<<~SQL)
      TRUNCATE category_settings;
    SQL
  end
end