class FixMalusPumilaVarietiesAndSpecieVarieties < ActiveRecord::Migration[5.0]

  VARIETY_CHANGES = [
    %w[malus_pumila_a_cotes malus_domestica],
    %w[malus_pumila_alza_sagarra malus_domestica],
    %w[malus_pumila_amere_nouvelle malus_domestica],
    %w[malus_pumila_ameres_de_bernieulles malus_domestica],
    %w[malus_pumila_anixa_antze_sagarra malus_domestica],
    %w[malus_pumila_api_d_ete malus_domestica],
    %w[malus_pumila_api_d_orange malus_domestica],
    %w[malus_pumila_api_double_rose_ou_api_rouge malus_domestica],
    %w[malus_pumila_api_etoile malus_domestica],
    %w[malus_pumila_argiliere_ou_dimoutiere malus_domestica],
    %w[malus_pumila_armagnac malus_domestica],
    %w[malus_pumila_ascahire malus_domestica],
    %w[malus_pumila_azaou_sagarra malus_domestica],
    %w[malus_pumila_azeroli_anise_mazoreli malus_domestica],
    %w[malus_pumila_baguette_d_hiver malus_domestica],
    %w[malus_pumila_baguette_violette malus_domestica],
    %w[malus_pumila_bailly_ou_belle_fleur_de_st_benoit malus_domestica],
    %w[malus_pumila_barbarie malus_domestica],
    %w[malus_pumila_beaurichard malus_domestica],
    %w[malus_pumila_bec_d_oie_du_cher malus_domestica],
    %w[malus_pumila_belle_de_juillet malus_domestica],
    %w[malus_pumila_belle_de_linards malus_domestica],
    %w[malus_pumila_belle_de_pontoise malus_domestica],
    %w[malus_pumila_belle_du_bois malus_domestica],
    %w[malus_pumila_belle_fille_de_l_indre malus_domestica],
    %w[malus_pumila_belle_fille_de_la_creuse malus_domestica],
    %w[malus_pumila_belle_fleur_double malus_domestica],
    %w[malus_pumila_belle_fleur_simple_petit_bon_ente malus_domestica],
    %w[malus_pumila_belle_louronnaise_nez_de_veau malus_domestica],
    %w[malus_pumila_beurriere malus_domestica],
    %w[malus_pumila_blanc_d_espagne malus_domestica],
    %w[malus_pumila_blanquette malus_domestica],
    %w[malus_pumila_bon_ente_belge malus_domestica],
    %w[malus_pumila_bon_ente_charbonnier malus_domestica],
    %w[malus_pumila_bondon malus_domestica],
    %w[malus_pumila_bonnet_carre malus_domestica],
    %w[malus_pumila_bordelesa malus_domestica],
    %w[malus_pumila_boulonnex malus_domestica],
    %w[malus_pumila_bourdin_sagarra malus_domestica],
    %w[malus_pumila_bouviere malus_domestica],
    %w[malus_pumila_cabarette malus_domestica],
    %w[malus_pumila_cachao_sagarra malus_domestica],
    %w[malus_pumila_calvi_blanc malus_domestica],
    %w[malus_pumila_calville_rouge_caramille malus_domestica],
    %w[malus_pumila_calvin malus_domestica],
    %w[malus_pumila_carisi_a_longue_queue malus_domestica],
    %w[malus_pumila_cassou_de_casse malus_domestica],
    %w[malus_pumila_cellini malus_domestica],
    %w[malus_pumila_chailleux malus_domestica],
    %w[malus_pumila_chataignier malus_domestica],
    %w[malus_pumila_chaux malus_domestica],
    %w[malus_pumila_choureau_reinette_choureau malus_domestica],
    %w[malus_pumila_clairefontaine malus_domestica],
    %w[malus_pumila_coing malus_domestica],
    %w[malus_pumila_colapuis malus_domestica],
    %w[malus_pumila_coquette_d_auvergne malus_domestica],
    %w[malus_pumila_court_pendu_d_espagne malus_domestica],
    %w[malus_pumila_court_pendu_gris malus_domestica],
    %w[malus_pumila_court_pendu_gris_du_limousin malus_domestica],
    %w[malus_pumila_court_pendu_rouge malus_domestica],
    %w[malus_pumila_court_pendu_rouge_du_lot_et_garonne malus_domestica],
    %w[malus_pumila_coutras malus_domestica],
    %w[malus_pumila_coxs_rouge_des_flandres malus_domestica],
    %w[malus_pumila_crarouge malus_domestica],
    %w[malus_pumila_cravert malus_domestica],
    %w[malus_pumila_de_bonde malus_domestica],
    %w[malus_pumila_de_estre_ou_sainte_germaine malus_domestica],
    %w[malus_pumila_de_jeu malus_domestica],
    %w[malus_pumila_de_tendre malus_domestica],
    %w[malus_pumila_demie_double malus_domestica],
    %w[malus_pumila_double_a_l_huile malus_domestica],
    %w[malus_pumila_double_belle_fleur malus_domestica],
    %w[malus_pumila_double_bon_pommier malus_domestica],
    %w[malus_pumila_double_bon_pommier_rouge malus_domestica],
    %w[malus_pumila_doux_corier malus_domestica],
    %w[malus_pumila_douzandin malus_domestica],
    %w[malus_pumila_douzandin_cidre malus_domestica],
    %w[malus_pumila_drap_d_or_de_la_creuse malus_domestica],
    %w[malus_pumila_du_verger malus_domestica],
    %w[malus_pumila_entzea_sagarra malus_domestica],
    %w[malus_pumila_eri_sagarra malus_domestica],
    %w[malus_pumila_eri_sagarra_cidre malus_domestica],
    %w[malus_pumila_errezila_sagarra malus_domestica],
    %w[malus_pumila_espagne malus_domestica],
    %w[malus_pumila_estirochia_sagarra malus_domestica],
    %w[malus_pumila_eztica malus_domestica],
    %w[malus_pumila_fer_du_cher malus_domestica],
    %w[malus_pumila_feuillot malus_domestica],
    %w[malus_pumila_feuilloux malus_domestica],
    %w[malus_pumila_finette_de_gallardon malus_domestica],
    %w[malus_pumila_fouillaud malus_domestica],
    %w[malus_pumila_franc_rougeau malus_domestica],
    %w[malus_pumila_gaillarde malus_domestica],
    %w[malus_pumila_gazi_loka malus_domestica],
    %w[malus_pumila_germaine malus_domestica],
    %w[malus_pumila_geza malus_domestica],
    %w[malus_pumila_geza_xurria malus_domestica],
    %w[malus_pumila_gold_reinette malus_domestica],
    %w[malus_pumila_gordain_xurria malus_domestica],
    %w[malus_pumila_gorri malus_domestica],
    %w[malus_pumila_gosselet malus_domestica],
    %w[malus_pumila_gris_baudet malus_domestica],
    %w[malus_pumila_gris_brabant malus_domestica],
    %w[malus_pumila_gros_locard malus_domestica],
    %w[malus_pumila_gros_museau_de_lievre_blanc malus_domestica],
    %w[malus_pumila_gueule_de_mouton malus_domestica],
    %w[malus_pumila_hollande_rouge malus_domestica],
    %w[malus_pumila_hybride_golden_x_cassou_106 malus_domestica],
    %w[malus_pumila_hybride_golden_x_cassou_43 malus_domestica],
    %w[malus_pumila_hybride_golden_x_cassou_89 malus_domestica],
    %w[malus_pumila_jacques_lebel malus_domestica],
    %w[malus_pumila_jincoa_sagarra_pomme_dieu malus_domestica],
    %w[malus_pumila_jinkoa_sagarra malus_domestica],
    %w[malus_pumila_koko_gorria malus_domestica],
    %w[malus_pumila_koko_xurria malus_domestica],
    %w[malus_pumila_kokua malus_domestica],
    %w[malus_pumila_la_douce malus_domestica],
    %w[malus_pumila_lanscailler malus_domestica],
    %w[malus_pumila_libra_sagarra malus_domestica],
    %w[malus_pumila_longue_queue malus_domestica],
    %w[malus_pumila_luche malus_domestica],
    %w[malus_pumila_mamula_xurri malus_domestica],
    %w[malus_pumila_marie_doudou malus_domestica],
    %w[malus_pumila_marie_menard malus_domestica],
    %w[malus_pumila_marseigna malus_domestica],
    %w[malus_pumila_michotte_de_gallardon malus_domestica],
    %w[malus_pumila_museau_de_lievre_jaune malus_domestica],
    %w[malus_pumila_museau_de_lievre_rouge_du_bearn malus_domestica],
    %w[malus_pumila_normandie_blanc malus_domestica],
    %w[malus_pumila_ontario malus_domestica],
    %w[malus_pumila_panneterie malus_domestica],
    %w[malus_pumila_patzulua malus_domestica],
    %w[malus_pumila_pay_bou_andre_maria_sagarra malus_domestica],
    %w[malus_pumila_peaxa malus_domestica],
    %w[malus_pumila_perasse_de_gan malus_domestica],
    %w[malus_pumila_perasse_de_ganpeaxaperasse_de_nay malus_domestica],
    %w[malus_pumila_perasse_de_nay malus_domestica],
    %w[malus_pumila_perasse_grise malus_domestica],
    %w[malus_pumila_perasse_jaune malus_domestica],
    %w[malus_pumila_perregue malus_domestica],
    %w[malus_pumila_petit_museau_de_lievre_blanc malus_domestica],
    %w[malus_pumila_petite_madeleine malus_domestica],
    %w[malus_pumila_pigeonnette malus_domestica],
    %w[malus_pumila_pineau malus_domestica],
    %w[malus_pumila_pomme_cloche malus_domestica],
    %w[malus_pumila_pomme_d_albret malus_domestica],
    %w[malus_pumila_pomme_d_anis_rosalie malus_domestica],
    %w[malus_pumila_pomme_d_anis_tardive malus_domestica],
    %w[malus_pumila_pomme_d_arengosse malus_domestica],
    %w[malus_pumila_pomme_d_argent malus_domestica],
    %w[malus_pumila_pomme_d_enfer_bordes malus_domestica],
    %w[malus_pumila_pomme_d_ile malus_domestica],
    %w[malus_pumila_pomme_de_bedeau malus_domestica],
    %w[malus_pumila_pomme_de_behier malus_domestica],
    %w[malus_pumila_pomme_de_beurre malus_domestica],
    %w[malus_pumila_pomme_de_bouet malus_domestica],
    %w[malus_pumila_pomme_de_choconin malus_domestica],
    %w[malus_pumila_pomme_de_coudre malus_domestica],
    %w[malus_pumila_pomme_de_douce_dame_franchon malus_domestica],
    %w[malus_pumila_pomme_de_fer malus_domestica],
    %w[malus_pumila_pomme_de_la_saint_jean malus_domestica],
    %w[malus_pumila_pomme_de_loumarin malus_domestica],
    %w[malus_pumila_pomme_de_madeleine malus_domestica],
    %w[malus_pumila_pomme_de_maillard malus_domestica],
    %w[malus_pumila_pomme_de_moisson malus_domestica],
    %w[malus_pumila_pomme_de_passe malus_domestica],
    %w[malus_pumila_pomme_de_pecantin malus_domestica],
    %w[malus_pumila_pomme_de_puits malus_domestica],
    %w[malus_pumila_pomme_de_rose malus_domestica],
    %w[malus_pumila_pomme_de_rougette malus_domestica],
    %w[malus_pumila_pomme_de_saint_michel malus_domestica],
    %w[malus_pumila_pomme_de_sore malus_domestica],
    %w[malus_pumila_pomme_de_tendron malus_domestica],
    %w[malus_pumila_pomme_dieu malus_domestica],
    %w[malus_pumila_pomme_glace malus_domestica],
    %w[malus_pumila_pomme_jacquet malus_domestica],
    %w[malus_pumila_pomme_jean_de_grignon malus_domestica],
    %w[malus_pumila_pomme_orange malus_domestica],
    %w[malus_pumila_pomme_poire malus_domestica],
    %w[malus_pumila_pomme_taupe malus_domestica],
    %w[malus_pumila_pouzac malus_domestica],
    %w[malus_pumila_pouzaraque malus_domestica],
    %w[malus_pumila_precoce_de_wirwignes malus_domestica],
    %w[malus_pumila_quarantaine_d_hiver malus_domestica],
    %w[malus_pumila_rador malus_domestica],
    %w[malus_pumila_rambour_d_hiver malus_domestica],
    %w[malus_pumila_razot malus_domestica],
    %w[malus_pumila_reale_d_entraygue malus_domestica],
    %w[malus_pumila_redondelle_blandureau malus_domestica],
    %w[malus_pumila_reinette_baumann malus_domestica],
    %w[malus_pumila_reinette_bure malus_domestica],
    %w[malus_pumila_reinette_clochard malus_domestica],
    %w[malus_pumila_reinette_d_angleterre malus_domestica],
    %w[malus_pumila_reinette_de_brive_de_l_estre malus_domestica],
    %w[malus_pumila_reinette_de_correze malus_domestica],
    %w[malus_pumila_reinette_de_flandre malus_domestica],
    %w[malus_pumila_reinette_de_france malus_domestica],
    %w[malus_pumila_reinette_de_fugelan malus_domestica],
    %w[malus_pumila_reinette_de_hollande malus_domestica],
    %w[malus_pumila_reinette_de_saintonge malus_domestica],
    %w[malus_pumila_reinette_de_villerette malus_domestica],
    %w[malus_pumila_reinette_de_waleffe malus_domestica],
    %w[malus_pumila_reinette_des_capucins malus_domestica],
    %w[malus_pumila_reinette_des_chatres malus_domestica],
    %w[malus_pumila_reinette_descardre malus_domestica],
    %w[malus_pumila_reinette_doree_de_l_indre malus_domestica],
    %w[malus_pumila_reinette_doree_reinette_d_or malus_domestica],
    %w[malus_pumila_reinette_du_mans malus_domestica],
    %w[malus_pumila_reinette_etoilee malus_domestica],
    %w[malus_pumila_reinette_grise_avancee malus_domestica],
    %w[malus_pumila_reinette_hernaut malus_domestica],
    %w[malus_pumila_reinette_jaune malus_domestica],
    %w[malus_pumila_reinette_marbree_d_auvergne malus_domestica],
    %w[malus_pumila_reinette_marbree_de_la_creuse malus_domestica],
    %w[malus_pumila_reinette_rouge_de_la_creuse malus_domestica],
    %w[malus_pumila_reinette_sans_pepin malus_domestica],
    %w[malus_pumila_reinette_tardive_d_englefontaine_la_clermontoise malus_domestica],
    %w[malus_pumila_rene_vert_reina_verte malus_domestica],
    %w[malus_pumila_roquet_rouge malus_domestica],
    %w[malus_pumila_roquet_rouge_cidre malus_domestica],
    %w[malus_pumila_rose_de_benauge malus_domestica],
    %w[malus_pumila_rose_de_hollande malus_domestica],
    %w[malus_pumila_rose_de_saint_yrieix malus_domestica],
    %w[malus_pumila_rose_de_virginie_ou_rose_d_ete malus_domestica],
    %w[malus_pumila_rose_du_perche malus_domestica],
    %w[malus_pumila_rouge_d_automne malus_domestica],
    %w[malus_pumila_rouge_extra_tres_tardive malus_domestica],
    %w[malus_pumila_rouillaud malus_domestica],
    %w[malus_pumila_ruban_1 malus_domestica],
    %w[malus_pumila_saint_brisson malus_domestica],
    %w[malus_pumila_saint_jean_transparente_blanche malus_domestica],
    %w[malus_pumila_saint_laurent_de_brenne malus_domestica],
    %w[malus_pumila_saint_michel_le_coudic malus_domestica],
    %w[malus_pumila_sang_de_boeuf malus_domestica],
    %w[malus_pumila_sans_graine malus_domestica],
    %w[malus_pumila_sans_pareille_de_peasgood malus_domestica],
    %w[malus_pumila_six_cotes malus_domestica],
    %w[malus_pumila_suzette malus_domestica],
    %w[malus_pumila_tardive_de_bouvignies_rambour_hiver malus_domestica],
    %w[malus_pumila_transparente_de_croncels malus_domestica],
    %w[malus_pumila_trelage malus_domestica],
    %w[malus_pumila_trompe_gelees malus_domestica],
    %w[malus_pumila_udarre_sagarra_apez_sagarra malus_domestica],
    %w[malus_pumila_urieta_sagarra malus_domestica],
    %w[malus_pumila_usta_xurria malus_domestica],
    %w[malus_pumila_vechter malus_domestica],
    %w[malus_pumila_vedette_du_bearn malus_domestica],
    %w[malus_pumila_verdale malus_domestica],
    %w[malus_pumila_verdin_d_automne malus_domestica],
    %w[malus_pumila_verdin_d_hiver malus_domestica],
    %w[malus_pumila_vermillon_d_espagne malus_domestica],
    %w[malus_pumila_vernade malus_domestica],
    %w[malus_pumila_vernajoux malus_domestica],
    %w[malus_pumila_vol_au_vent malus_domestica]
  ].freeze

  TABLE_COLUMNS = [
    %w[product_natures variety], %w[product_natures derivative_of],
    %w[product_nature_variants derivative_of],
    %w[products variety], %w[products derivative_of],
    %w[activities cultivation_variety], %w[manure_management_plan_zones cultivation_variety]
  ].freeze

  def change
    request = VARIETY_CHANGES.flat_map do |(former_variety, new_variety)|
      TABLE_COLUMNS.map do |(table, column)|
        <<~SQL
          UPDATE #{table}
            SET #{column} = '#{new_variety}'
          WHERE #{column} = '#{former_variety}'
        SQL
      end
    end

    execute request.join(';')

    variants_request = VARIETY_CHANGES.map do |(former_variety, new_variety)|
      <<~SQL
        UPDATE product_nature_variants
          SET variety = '#{new_variety}',
              specie_variety = '#{former_variety}'
        WHERE variety = '#{former_variety}'
      SQL
    end

    execute variants_request.join(';')
  end
end
