const upsert = require('../src/utils/upsert'); const countries = [ { name: 'Afghanistan', code: '004', alpha2: 'AF', }, { name: 'Åland Islands', code: '248', alpha2: 'AX', }, { name: 'Albania', code: '008', alpha2: 'AL', }, { name: 'Algeria', code: '012', alpha2: 'DZ', }, { name: 'American Samoa', code: '016', alpha2: 'AS', }, { name: 'Andorra', code: '020', alpha2: 'AD', }, { name: 'Angola', code: '024', alpha2: 'AO', }, { name: 'Anguilla', code: '660', alpha2: 'AI', }, { name: 'Antarctica', code: '010', alpha2: 'AQ', }, { name: 'Antigua and Barbuda', code: '028', alpha2: 'AG', }, { name: 'Argentina', code: '032', alpha2: 'AR', }, { name: 'Armenia', code: '051', alpha2: 'AM', }, { name: 'Aruba', code: '533', alpha2: 'AW', }, { name: 'Australia', code: '036', alpha2: 'AU', }, { name: 'Austria', code: '040', alpha2: 'AT', }, { name: 'Azerbaijan', code: '031', alpha2: 'AZ', }, { name: 'Bahamas', code: '044', alpha2: 'BS', }, { name: 'Bahrain', code: '048', alpha2: 'BH', }, { name: 'Bangladesh', code: '050', alpha2: 'BD', }, { name: 'Barbados', code: '052', alpha2: 'BB', }, { name: 'Belarus', code: '112', alpha2: 'BY', }, { name: 'Belgium', code: '056', alpha2: 'BE', }, { name: 'Belize', code: '084', alpha2: 'BZ', }, { name: 'Benin', code: '204', alpha2: 'BJ', }, { name: 'Bermuda', code: '060', alpha2: 'BM', }, { name: 'Bhutan', code: '064', alpha2: 'BT', }, { name: 'Bolivia', code: '068', alpha2: 'BO', }, { name: 'Bonaire, Sint Eustatius and Saba', code: '535', alpha2: 'BQ', }, { name: 'Bosnia and Herzegovina', code: '070', alpha2: 'BA', }, { name: 'Botswana', code: '072', alpha2: 'BW', }, { name: 'Bouvet Island', code: '074', alpha2: 'BV', }, { name: 'Brazil', code: '076', alpha2: 'BR', }, { name: 'British Indian Ocean Territory', code: '086', alpha2: 'IO', }, { name: 'Brunei Darussalam', code: '096', alpha2: 'BN', }, { name: 'Bulgaria', code: '100', alpha2: 'BG', }, { name: 'Burkina Faso', code: '854', alpha2: 'BF', }, { name: 'Burundi', code: '108', alpha2: 'BI', }, { name: 'Cabo Verde', code: '132', alpha2: 'CV', }, { name: 'Cambodia', code: '116', alpha2: 'KH', }, { name: 'Cameroon', code: '120', alpha2: 'CM', }, { name: 'Canada', code: '124', alpha2: 'CA', }, { name: 'Cayman Islands', code: '136', alpha2: 'KY', }, { name: 'Central African Republic', code: '140', alpha2: 'CF', }, { name: 'Chad', code: '148', alpha2: 'TD', }, { name: 'Chile', code: '152', alpha2: 'CL', }, { name: 'China', code: '156', alpha2: 'CN', }, { name: 'Christmas Island', code: '162', alpha2: 'CX', }, { name: 'Cocos (Keeling) Islands', code: '166', alpha2: 'CC', }, { name: 'Colombia', code: '170', alpha2: 'CO', }, { name: 'Comoros', code: '174', alpha2: 'KM', }, { name: 'Congo', code: '178', alpha2: 'CG', }, { name: 'Congo', code: '180', alpha2: 'CD', }, { name: 'Cook Islands', code: '184', alpha2: 'CK', }, { name: 'Costa Rica', code: '188', alpha2: 'CR', }, { name: 'Côte d\'Ivoire', code: '384', alpha2: 'CI', }, { name: 'Croatia', code: '191', alpha2: 'HR', }, { name: 'Cuba', code: '192', alpha2: 'CU', }, { name: 'Curaçao', code: '531', alpha2: 'CW', }, { name: 'Cyprus', code: '196', alpha2: 'CY', }, { name: 'Czechia', code: '203', alpha2: 'CZ', }, { name: 'Denmark', code: '208', alpha2: 'DK', }, { name: 'Djibouti', code: '262', alpha2: 'DJ', }, { name: 'Dominica', code: '212', alpha2: 'DM', }, { name: 'Dominican Republic', code: '214', alpha2: 'DO', }, { name: 'Ecuador', code: '218', alpha2: 'EC', }, { name: 'Egypt', code: '818', alpha2: 'EG', }, { name: 'El Salvador', code: '222', alpha2: 'SV', }, { name: 'Equatorial Guinea', code: '226', alpha2: 'GQ', }, { name: 'Eritrea', code: '232', alpha2: 'ER', }, { name: 'Estonia', code: '233', alpha2: 'EE', }, { name: 'Ethiopia', code: '231', alpha2: 'ET', }, { name: 'Falkland Islands', code: '238', alpha2: 'FK', }, { name: 'Faroe Islands', code: '234', alpha2: 'FO', }, { name: 'Fiji', code: '242', alpha2: 'FJ', }, { name: 'Finland', code: '246', alpha2: 'FI', }, { name: 'France', code: '250', alpha2: 'FR', }, { name: 'French Guiana', code: '254', alpha2: 'GF', }, { name: 'French Polynesia', code: '258', alpha2: 'PF', }, { name: 'French Southern Territories', code: '260', alpha2: 'TF', }, { name: 'Gabon', code: '266', alpha2: 'GA', }, { name: 'Gambia', code: '270', alpha2: 'GM', }, { name: 'Georgia', code: '268', alpha2: 'GE', }, { name: 'Germany', code: '276', alpha2: 'DE', }, { name: 'Ghana', code: '288', alpha2: 'GH', }, { name: 'Gibraltar', code: '292', alpha2: 'GI', }, { name: 'Greece', code: '300', alpha2: 'GR', }, { name: 'Greenland', code: '304', alpha2: 'GL', }, { name: 'Grenada', code: '308', alpha2: 'GD', }, { name: 'Guadeloupe', code: '312', alpha2: 'GP', }, { name: 'Guam', code: '316', alpha2: 'GU', }, { name: 'Guatemala', code: '320', alpha2: 'GT', }, { name: 'Guernsey', code: '831', alpha2: 'GG', }, { name: 'Guinea', code: '324', alpha2: 'GN', }, { name: 'Guinea-Bissau', code: '624', alpha2: 'GW', }, { name: 'Guyana', code: '328', alpha2: 'GY', }, { name: 'Haiti', code: '332', alpha2: 'HT', }, { name: 'Heard Island and McDonald Islands', code: '334', alpha2: 'HM', }, { name: 'Holy See', code: '336', alpha2: 'VA', }, { name: 'Honduras', code: '340', alpha2: 'HN', }, { name: 'Hong Kong', code: '344', alpha2: 'HK', }, { name: 'Hungary', code: '348', alpha2: 'HU', }, { name: 'Iceland', code: '352', alpha2: 'IS', }, { name: 'India', code: '356', alpha2: 'IN', }, { name: 'Indonesia', code: '360', alpha2: 'ID', }, { name: 'Iran', code: '364', alpha2: 'IR', }, { name: 'Iraq', code: '368', alpha2: 'IQ', }, { name: 'Ireland', code: '372', alpha2: 'IE', }, { name: 'Isle of Man', code: '833', alpha2: 'IM', }, { name: 'Israel', code: '376', alpha2: 'IL', }, { name: 'Italy', code: '380', alpha2: 'IT', }, { name: 'Jamaica', code: '388', alpha2: 'JM', }, { name: 'Japan', code: '392', alpha2: 'JP', }, { name: 'Jersey', code: '832', alpha2: 'JE', }, { name: 'Jordan', code: '400', alpha2: 'JO', }, { name: 'Kazakhstan', code: '398', alpha2: 'KZ', }, { name: 'Kenya', code: '404', alpha2: 'KE', }, { name: 'Kiribati', code: '296', alpha2: 'KI', }, { name: 'North Korea', code: '408', alpha2: 'KP', }, { name: 'South Korea', code: '410', alpha2: 'KR', }, { name: 'Kuwait', code: '414', alpha2: 'KW', }, { name: 'Kyrgyzstan', code: '417', alpha2: 'KG', }, { name: 'Laos', code: '418', alpha2: 'LA', }, { name: 'Latvia', code: '428', alpha2: 'LV', }, { name: 'Lebanon', code: '422', alpha2: 'LB', }, { name: 'Lesotho', code: '426', alpha2: 'LS', }, { name: 'Liberia', code: '430', alpha2: 'LR', }, { name: 'Libya', code: '434', alpha2: 'LY', }, { name: 'Liechtenstein', code: '438', alpha2: 'LI', }, { name: 'Lithuania', code: '440', alpha2: 'LT', }, { name: 'Luxembourg', code: '442', alpha2: 'LU', }, { name: 'Macao', code: '446', alpha2: 'MO', }, { name: 'Macedonia', code: '807', alpha2: 'MK', }, { name: 'Madagascar', code: '450', alpha2: 'MG', }, { name: 'Malawi', code: '454', alpha2: 'MW', }, { name: 'Malaysia', code: '458', alpha2: 'MY', }, { name: 'Maldives', code: '462', alpha2: 'MV', }, { name: 'Mali', code: '466', alpha2: 'ML', }, { name: 'Malta', code: '470', alpha2: 'MT', }, { name: 'Marshall Islands', code: '584', alpha2: 'MH', }, { name: 'Martinique', code: '474', alpha2: 'MQ', }, { name: 'Mauritania', code: '478', alpha2: 'MR', }, { name: 'Mauritius', code: '480', alpha2: 'MU', }, { name: 'Mayotte', code: '175', alpha2: 'YT', }, { name: 'Mexico', code: '484', alpha2: 'MX', }, { name: 'Micronesia', code: '583', alpha2: 'FM', }, { name: 'Moldova', code: '498', alpha2: 'MD', }, { name: 'Monaco', code: '492', alpha2: 'MC', }, { name: 'Mongolia', code: '496', alpha2: 'MN', }, { name: 'Montenegro', code: '499', alpha2: 'ME', }, { name: 'Montserrat', code: '500', alpha2: 'MS', }, { name: 'Morocco', code: '504', alpha2: 'MA', }, { name: 'Mozambique', code: '508', alpha2: 'MZ', }, { name: 'Myanmar', code: '104', alpha2: 'MM', }, { name: 'Namibia', code: '516', alpha2: 'NA', }, { name: 'Nauru', code: '520', alpha2: 'NR', }, { name: 'Nepal', code: '524', alpha2: 'NP', }, { name: 'Netherlands', code: '528', alpha2: 'NL', }, { name: 'New Caledonia', code: '540', alpha2: 'NC', }, { name: 'New Zealand', code: '554', alpha2: 'NZ', }, { name: 'Nicaragua', code: '558', alpha2: 'NI', }, { name: 'Niger', code: '562', alpha2: 'NE', }, { name: 'Nigeria', code: '566', alpha2: 'NG', }, { name: 'Niue', code: '570', alpha2: 'NU', }, { name: 'Norfolk Island', code: '574', alpha2: 'NF', }, { name: 'Northern Mariana Islands', code: '580', alpha2: 'MP', }, { name: 'Norway', code: '578', alpha2: 'NO', }, { name: 'Oman', code: '512', alpha2: 'OM', }, { name: 'Pakistan', code: '586', alpha2: 'PK', }, { name: 'Palau', code: '585', alpha2: 'PW', }, { name: 'Palestine', code: '275', alpha2: 'PS', }, { name: 'Panama', code: '591', alpha2: 'PA', }, { name: 'Papua New Guinea', code: '598', alpha2: 'PG', }, { name: 'Paraguay', code: '600', alpha2: 'PY', }, { name: 'Peru', code: '604', alpha2: 'PE', }, { name: 'Philippines', code: '608', alpha2: 'PH', }, { name: 'Pitcairn', code: '612', alpha2: 'PN', }, { name: 'Poland', code: '616', alpha2: 'PL', }, { name: 'Portugal', code: '620', alpha2: 'PT', }, { name: 'Puerto Rico', code: '630', alpha2: 'PR', }, { name: 'Qatar', code: '634', alpha2: 'QA', }, { name: 'Réunion', code: '638', alpha2: 'RE', }, { name: 'Romania', code: '642', alpha2: 'RO', }, { name: 'Russia', code: '643', alpha2: 'RU', }, { name: 'Rwanda', code: '646', alpha2: 'RW', }, { name: 'Saint Barthélemy', code: '652', alpha2: 'BL', }, { name: 'Saint Helena, Ascension and Tristan da Cunha', code: '654', alpha2: 'SH', }, { name: 'Saint Kitts and Nevis', code: '659', alpha2: 'KN', }, { name: 'Saint Lucia', code: '662', alpha2: 'LC', }, { name: 'Saint Martin (French)', code: '663', alpha2: 'MF', }, { name: 'Saint Pierre and Miquelon', code: '666', alpha2: 'PM', }, { name: 'Saint Vincent and the Grenadines', code: '670', alpha2: 'VC', }, { name: 'Samoa', code: '882', alpha2: 'WS', }, { name: 'San Marino', code: '674', alpha2: 'SM', }, { name: 'Sao Tome and Principe', code: '678', alpha2: 'ST', }, { name: 'Saudi Arabia', code: '682', alpha2: 'SA', }, { name: 'Senegal', code: '686', alpha2: 'SN', }, { name: 'Serbia', code: '688', alpha2: 'RS', }, { name: 'Seychelles', code: '690', alpha2: 'SC', }, { name: 'Sierra Leone', code: '694', alpha2: 'SL', }, { name: 'Singapore', code: '702', alpha2: 'SG', }, { name: 'Sint Maarten (Dutch)', code: '534', alpha2: 'SX', }, { name: 'Slovakia', code: '703', alpha2: 'SK', }, { name: 'Slovenia', code: '705', alpha2: 'SI', }, { name: 'Solomon Islands', code: '090', alpha2: 'SB', }, { name: 'Somalia', code: '706', alpha2: 'SO', }, { name: 'South Africa', code: '710', alpha2: 'ZA', }, { name: 'South Georgia and the South Sandwich Islands', code: '239', alpha2: 'GS', }, { name: 'South Sudan', code: '728', alpha2: 'SS', }, { name: 'Spain', code: '724', alpha2: 'ES', }, { name: 'Sri Lanka', code: '144', alpha2: 'LK', }, { name: 'Sudan', code: '729', alpha2: 'SD', }, { name: 'Suriname', code: '740', alpha2: 'SR', }, { name: 'Svalbard and Jan Mayen', code: '744', alpha2: 'SJ', }, { name: 'Swaziland', code: '748', alpha2: 'SZ', }, { name: 'Sweden', code: '752', alpha2: 'SE', }, { name: 'Switzerland', code: '756', alpha2: 'CH', }, { name: 'Syrian Arab Republic', code: '760', alpha2: 'SY', }, { name: 'Taiwan, Province of China', code: '158', alpha2: 'TW', }, { name: 'Tajikistan', code: '762', alpha2: 'TJ', }, { name: 'Tanzania', code: '834', alpha2: 'TZ', }, { name: 'Thailand', code: '764', alpha2: 'TH', }, { name: 'Timor-Leste', code: '626', alpha2: 'TL', }, { name: 'Togo', code: '768', alpha2: 'TG', }, { name: 'Tokelau', code: '772', alpha2: 'TK', }, { name: 'Tonga', code: '776', alpha2: 'TO', }, { name: 'Trinalpha2ad and Tobago', code: '780', alpha2: 'TT', }, { name: 'Tunisia', code: '788', alpha2: 'TN', }, { name: 'Turkey', code: '792', alpha2: 'TR', }, { name: 'Turkmenistan', code: '795', alpha2: 'TM', }, { name: 'Turks and Caicos Islands', code: '796', alpha2: 'TC', }, { name: 'Tuvalu', code: '798', alpha2: 'TV', }, { name: 'Uganda', code: '800', alpha2: 'UG', }, { name: 'Ukraine', code: '804', alpha2: 'UA', }, { name: 'United Arab Emirates', code: '784', alpha2: 'AE', }, { name: 'United Kingdom', code: '826', alpha2: 'GB', }, { name: 'United States', code: '840', alpha2: 'US', }, { name: 'United States, Minor Outlying Islands', code: '581', alpha2: 'UM', }, { name: 'Uruguay', code: '858', alpha2: 'UY', }, { name: 'Uzbekistan', code: '860', alpha2: 'UZ', }, { name: 'Vanuatu', code: '548', alpha2: 'VU', }, { name: 'Venezuela', code: '862', alpha2: 'VE', }, { name: 'Vietnam', code: '704', alpha2: 'VN', }, { name: 'Virgin Islands (UK)', code: '092', alpha2: 'VG', }, { name: 'Virgin Islands (US)', code: '850', alpha2: 'VI', }, { name: 'Wallis and Futuna', code: '876', alpha2: 'WF', }, { name: 'Western Sahara', code: '732', alpha2: 'EH', }, { name: 'Yemen', code: '887', alpha2: 'YE', }, { name: 'Zambia', code: '894', alpha2: 'ZM', }, { name: 'Zimbabwe', code: '716', alpha2: 'ZW', }, ]; exports.seed = knex => knex('countries') .then(async () => { const duplicates = await knex('countries').select('*'); const duplicatesByAlpha2 = duplicates.reduce((acc, country) => ({ ...acc, [country.alpha2]: country }), {}); return upsert('countries', countries, duplicatesByAlpha2, 'alpha2', knex); });