traxxx-web/src/countries.js

31 lines
712 B
JavaScript

import knex from './knex.js';
function curateCountry(countryEntry) {
return {
name: countryEntry.name,
alias: countryEntry.alias,
alpha2: countryEntry.alpha2,
code: countryEntry.code,
};
}
export async function fetchCountriesByAlpha2(alpha2s, options = {}) {
const entries = await knex('countries')
.whereIn('alpha2', alpha2s)
.orderBy(knex.raw('coalesce(alias, name)'));
if (options.preserveOrder) {
return alpha2s.map((alpha2) => {
const countryEntry = entries.find((entry) => entry.alpha2 === alpha2);
if (!countryEntry) {
return null;
}
return curateCountry(countryEntry);
}).filter(Boolean);
}
return entries.map((countryEntry) => curateCountry(countryEntry));
}