Sha256: d719ad3b657243fe867c4c4cc81313c9fa84fbdcbeb37ddc39d77af34ed7612e

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

class MoveSearchableToContents < ActiveRecord::Migration[6.1]
  def change
    if column_exists? :alchemy_contents, :searchable
      return
    end

    add_column :alchemy_contents, :searchable, :boolean, default: true

    {
      Text: "texts",
      Richtext: "richtexts",
      Picture: "pictures",
    }.each do |klass, table|
      reversible do |dir|
        dir.up do
          Alchemy::Content.connection.execute <<~SQL
            UPDATE alchemy_contents
            SET searchable = alchemy_essence_#{table}.searchable
            FROM alchemy_essence_#{table}
            WHERE
              alchemy_contents.essence_type = 'Alchemy::Essence#{klass}'
            AND
              alchemy_contents.essence_id = alchemy_essence_#{table}.id
          SQL
        end

        dir.down do
          Alchemy::Content.connection.execute <<~SQL
            UPDATE alchemy_essence_#{table}
            SET searchable = alchemy_contents.searchable
            FROM alchemy_contents
            WHERE
              alchemy_contents.essence_type = 'Alchemy::Essence#{klass}'
            AND
              alchemy_contents.essence_id = alchemy_essence_#{table}.id
          SQL
        end
      end

      remove_column "alchemy_essence_#{table}", :searchable, default: true
    end

    change_column_null :alchemy_contents, :searchable, false, true
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alchemy-pg_search-5.2.0 db/migrate/20210923081905_move_searchable_to_contents.rb
alchemy-pg_search-5.1.0 db/migrate/20210923081905_move_searchable_to_contents.rb