Sha256: e0e6f18b4ebf61c0e97ab269c5517486b4411f72d470d962a5ea8d7c3e633b9b

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

namespace :solidus do
  namespace :migrations do
    namespace :migrate_default_billing_addresses_to_address_book do
      task up: :environment do
        print "Migrating default billing addresses to address book ... "
        if Spree::UserAddress.where(default_billing: true).any?
          Spree::LegacyUser.joins(:bill_address).update_all(bill_address_id: nil) # rubocop:disable Rails/SkipsModelValidations
        end
        adapter_type = Spree::Base.connection.adapter_name.downcase.to_sym
        if adapter_type == :mysql2
          sql = <<~SQL
            UPDATE spree_user_addresses
            JOIN spree_users ON spree_user_addresses.user_id = spree_users.id
              AND spree_user_addresses.address_id = spree_users.bill_address_id
            SET spree_user_addresses.default_billing = true
          SQL
        else
          sql = <<~SQL
            UPDATE spree_user_addresses
            SET default_billing = true
            FROM spree_users
            WHERE spree_user_addresses.address_id = spree_users.bill_address_id
              AND spree_user_addresses.user_id = spree_users.id;
          SQL
        end
        Spree::Base.connection.execute sql
        puts "Success"
      end

      task down: :environment do
        Spree::UserAddress.update_all(default_billing: false) # rubocop:disable Rails/SkipsModelValidations
        puts "Rolled back default billing address migration to address book"
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_core-2.11.6 lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake
solidus_core-3.0.0.rc2 lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake
solidus_core-2.11.5 lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake