# frozen_string_literal: true class AddThemes < ActiveRecord::Migration[4.2] def up rename_table :site_customizations, :themes add_column :themes, :user_selectable, :bool, null: false, default: false add_column :themes, :hidden, :bool, null: false, default: false add_column :themes, :color_scheme_id, :integer create_table :child_themes do |t| t.integer :parent_theme_id t.integer :child_theme_id t.timestamps null: false end add_index :child_themes, %i[parent_theme_id child_theme_id], unique: true add_index :child_themes, %i[child_theme_id parent_theme_id], unique: true # versioning in color scheme table was very confusing, remove it execute "DELETE FROM color_schemes WHERE versioned_id IS NOT NULL" remove_column :color_schemes, :versioned_id enabled_theme_count = execute("SELECT count(*) FROM themes WHERE enabled").to_a[0]["count"].to_i enabled_scheme_id = execute("SELECT id FROM color_schemes WHERE enabled").to_a[0]&.fetch("id") theme_key, theme_id = execute("SELECT key, id FROM themes WHERE enabled").to_a[0]&.values if (enabled_theme_count == 0 && enabled_scheme_id) || enabled_theme_count > 1 puts "Creating a new default theme!" theme_key = "7e202ef2-6666-47d5-98d8-a9c8d15e57dd" sql = < 1 INSERT INTO child_themes(parent_theme_id, child_theme_id, created_at, updated_at) SELECT #{theme_id.to_i}, id, created_at, updated_at FROM themes WHERE enabled SQL if enabled_scheme_id execute "UPDATE themes SET color_scheme_id=#{enabled_scheme_id.to_i} WHERE id=#{theme_id.to_i}" end if enabled_scheme_id || (enabled_theme_count > 0) puts "Setting default theme" sql = <