Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
338 lines
11 KiB
JavaScript
338 lines
11 KiB
JavaScript
/**
|
|
* @param { import("knex").Knex } knex
|
|
* @returns { Promise<void> }
|
|
*/
|
|
exports.up = async function(knex) {
|
|
// Add flag_emoji column to countries table
|
|
await knex.schema.alterTable('countries', function(table) {
|
|
table.string('flag_emoji', 10);
|
|
});
|
|
|
|
// Add flag emojis for all countries
|
|
const flagUpdates = [
|
|
// A
|
|
['AD', '🇦🇩'], // Andorra
|
|
['AE', '🇦🇪'], // United Arab Emirates
|
|
['AF', '🇦🇫'], // Afghanistan
|
|
['AG', '🇦🇬'], // Antigua and Barbuda
|
|
['AI', '🇦🇮'], // Anguilla
|
|
['AL', '🇦🇱'], // Albania
|
|
['AM', '🇦🇲'], // Armenia
|
|
['AO', '🇦🇴'], // Angola
|
|
['AQ', '🇦🇶'], // Antarctica
|
|
['AR', '🇦🇷'], // Argentina
|
|
['AS', '🇦🇸'], // American Samoa
|
|
['AT', '🇦🇹'], // Austria
|
|
['AU', '🇦🇺'], // Australia
|
|
['AW', '🇦🇼'], // Aruba
|
|
['AX', '🇦🇽'], // Åland Islands
|
|
['AZ', '🇦🇿'], // Azerbaijan
|
|
|
|
// B
|
|
['BA', '🇧🇦'], // Bosnia and Herzegovina
|
|
['BB', '🇧🇧'], // Barbados
|
|
['BD', '🇧🇩'], // Bangladesh
|
|
['BE', '🇧🇪'], // Belgium
|
|
['BF', '🇧🇫'], // Burkina Faso
|
|
['BG', '🇧🇬'], // Bulgaria
|
|
['BH', '🇧🇭'], // Bahrain
|
|
['BI', '🇧🇮'], // Burundi
|
|
['BJ', '🇧🇯'], // Benin
|
|
['BL', '🇧🇱'], // Saint Barthélemy
|
|
['BM', '🇧🇲'], // Bermuda
|
|
['BN', '🇧🇳'], // Brunei Darussalam
|
|
['BO', '🇧🇴'], // Bolivia
|
|
['BQ', '🇧🇶'], // Bonaire, Sint Eustatius and Saba
|
|
['BR', '🇧🇷'], // Brazil
|
|
['BS', '🇧🇸'], // Bahamas
|
|
['BT', '🇧🇹'], // Bhutan
|
|
['BV', '🇧🇻'], // Bouvet Island
|
|
['BW', '🇧🇼'], // Botswana
|
|
['BY', '🇧🇾'], // Belarus
|
|
['BZ', '🇧🇿'], // Belize
|
|
|
|
// C
|
|
['CA', '🇨🇦'], // Canada
|
|
['CC', '🇨🇨'], // Cocos (Keeling) Islands
|
|
['CD', '🇨🇩'], // Congo, Democratic Republic of the
|
|
['CF', '🇨🇫'], // Central African Republic
|
|
['CG', '🇨🇬'], // Congo
|
|
['CH', '🇨🇭'], // Switzerland
|
|
['CI', '🇨🇮'], // Côte d'Ivoire
|
|
['CK', '🇨🇰'], // Cook Islands
|
|
['CL', '🇨🇱'], // Chile
|
|
['CM', '🇨🇲'], // Cameroon
|
|
['CN', '🇨🇳'], // China
|
|
['CO', '🇨🇴'], // Colombia
|
|
['CR', '🇨🇷'], // Costa Rica
|
|
['CU', '🇨🇺'], // Cuba
|
|
['CV', '🇨🇻'], // Cabo Verde
|
|
['CW', '🇨🇼'], // Curaçao
|
|
['CX', '🇨🇽'], // Christmas Island
|
|
['CY', '🇨🇾'], // Cyprus
|
|
['CZ', '🇨🇿'], // Czech Republic
|
|
|
|
// D
|
|
['DE', '🇩🇪'], // Germany
|
|
['DJ', '🇩🇯'], // Djibouti
|
|
['DK', '🇩🇰'], // Denmark
|
|
['DM', '🇩🇲'], // Dominica
|
|
['DO', '🇩🇴'], // Dominican Republic
|
|
['DZ', '🇩🇿'], // Algeria
|
|
|
|
// E
|
|
['EC', '🇪🇨'], // Ecuador
|
|
['EE', '🇪🇪'], // Estonia
|
|
['EG', '🇪🇬'], // Egypt
|
|
['EH', '🇪🇭'], // Western Sahara
|
|
['ER', '🇪🇷'], // Eritrea
|
|
['ES', '🇪🇸'], // Spain
|
|
['ET', '🇪🇹'], // Ethiopia
|
|
|
|
// F
|
|
['FI', '🇫🇮'], // Finland
|
|
['FJ', '🇫🇯'], // Fiji
|
|
['FK', '🇫🇰'], // Falkland Islands (Malvinas)
|
|
['FM', '🇫🇲'], // Micronesia, Federated States of
|
|
['FO', '🇫🇴'], // Faroe Islands
|
|
['FR', '🇫🇷'], // France
|
|
|
|
// G
|
|
['GA', '🇬🇦'], // Gabon
|
|
['GB', '🇬🇧'], // United Kingdom
|
|
['GD', '🇬🇩'], // Grenada
|
|
['GE', '🇬🇪'], // Georgia
|
|
['GF', '🇬🇫'], // French Guiana
|
|
['GG', '🇬🇬'], // Guernsey
|
|
['GH', '🇬🇭'], // Ghana
|
|
['GI', '🇬🇮'], // Gibraltar
|
|
['GL', '🇬🇱'], // Greenland
|
|
['GM', '🇬🇲'], // Gambia
|
|
['GN', '🇬🇳'], // Guinea
|
|
['GP', '🇬🇵'], // Guadeloupe
|
|
['GQ', '🇬🇶'], // Equatorial Guinea
|
|
['GR', '🇬🇷'], // Greece
|
|
['GS', '🇬🇸'], // South Georgia and the South Sandwich Islands
|
|
['GT', '🇬🇹'], // Guatemala
|
|
['GU', '🇬🇺'], // Guam
|
|
['GW', '🇬🇼'], // Guinea-Bissau
|
|
['GY', '🇬🇾'], // Guyana
|
|
|
|
// H
|
|
['HK', '🇭🇰'], // Hong Kong
|
|
['HM', '🇭🇲'], // Heard Island and McDonald Islands
|
|
['HN', '🇭🇳'], // Honduras
|
|
['HR', '🇭🇷'], // Croatia
|
|
['HT', '🇭🇹'], // Haiti
|
|
['HU', '🇭🇺'], // Hungary
|
|
|
|
// I
|
|
['ID', '🇮🇩'], // Indonesia
|
|
['IE', '🇮🇪'], // Ireland
|
|
['IL', '🇮🇱'], // Israel
|
|
['IM', '🇮🇲'], // Isle of Man
|
|
['IN', '🇮🇳'], // India
|
|
['IO', '🇮🇴'], // British Indian Ocean Territory
|
|
['IQ', '🇮🇶'], // Iraq
|
|
['IR', '🇮🇷'], // Iran
|
|
['IS', '🇮🇸'], // Iceland
|
|
['IT', '🇮🇹'], // Italy
|
|
|
|
// J
|
|
['JE', '🇯🇪'], // Jersey
|
|
['JM', '🇯🇲'], // Jamaica
|
|
['JO', '🇯🇴'], // Jordan
|
|
['JP', '🇯🇵'], // Japan
|
|
|
|
// K
|
|
['KE', '🇰🇪'], // Kenya
|
|
['KG', '🇰🇬'], // Kyrgyzstan
|
|
['KH', '🇰🇭'], // Cambodia
|
|
['KI', '🇰🇮'], // Kiribati
|
|
['KM', '🇰🇲'], // Comoros
|
|
['KN', '🇰🇳'], // Saint Kitts and Nevis
|
|
['KP', '🇰🇵'], // Korea, Democratic People's Republic of
|
|
['KR', '🇰🇷'], // Korea, Republic of
|
|
['KW', '🇰🇼'], // Kuwait
|
|
['KY', '🇰🇾'], // Cayman Islands
|
|
['KZ', '🇰🇿'], // Kazakhstan
|
|
|
|
// L
|
|
['LA', '🇱🇦'], // Lao People's Democratic Republic
|
|
['LB', '🇱🇧'], // Lebanon
|
|
['LC', '🇱🇨'], // Saint Lucia
|
|
['LI', '🇱🇮'], // Liechtenstein
|
|
['LK', '🇱🇰'], // Sri Lanka
|
|
['LR', '🇱🇷'], // Liberia
|
|
['LS', '🇱🇸'], // Lesotho
|
|
['LT', '🇱🇹'], // Lithuania
|
|
['LU', '🇱🇺'], // Luxembourg
|
|
['LV', '🇱🇻'], // Latvia
|
|
['LY', '🇱🇾'], // Libya
|
|
|
|
// M
|
|
['MA', '🇲🇦'], // Morocco
|
|
['MC', '🇲🇨'], // Monaco
|
|
['MD', '🇲🇩'], // Moldova, Republic of
|
|
['ME', '🇲🇪'], // Montenegro
|
|
['MF', '🇲🇫'], // Saint Martin (French part)
|
|
['MG', '🇲🇬'], // Madagascar
|
|
['MH', '🇲🇭'], // Marshall Islands
|
|
['MK', '🇲🇰'], // North Macedonia
|
|
['ML', '🇲🇱'], // Mali
|
|
['MM', '🇲🇲'], // Myanmar
|
|
['MN', '🇲🇳'], // Mongolia
|
|
['MO', '🇲🇴'], // Macao
|
|
['MP', '🇲🇵'], // Northern Mariana Islands
|
|
['MQ', '🇲🇶'], // Martinique
|
|
['MR', '🇲🇷'], // Mauritania
|
|
['MS', '🇲🇸'], // Montserrat
|
|
['MT', '🇲🇹'], // Malta
|
|
['MU', '🇲🇺'], // Mauritius
|
|
['MV', '🇲🇻'], // Maldives
|
|
['MW', '🇲🇼'], // Malawi
|
|
['MX', '🇲🇽'], // Mexico
|
|
['MY', '🇲🇾'], // Malaysia
|
|
['MZ', '🇲🇿'], // Mozambique
|
|
|
|
// N
|
|
['NA', '🇳🇦'], // Namibia
|
|
['NC', '🇳🇨'], // New Caledonia
|
|
['NE', '🇳🇪'], // Niger
|
|
['NF', '🇳🇫'], // Norfolk Island
|
|
['NG', '🇳🇬'], // Nigeria
|
|
['NI', '🇳🇮'], // Nicaragua
|
|
['NL', '🇳🇱'], // Netherlands
|
|
['NO', '🇳🇴'], // Norway
|
|
['NP', '🇳🇵'], // Nepal
|
|
['NR', '🇳🇷'], // Nauru
|
|
['NU', '🇳🇺'], // Niue
|
|
['NZ', '🇳🇿'], // New Zealand
|
|
|
|
// O
|
|
['OM', '🇴🇲'], // Oman
|
|
|
|
// P
|
|
['PA', '🇵🇦'], // Panama
|
|
['PE', '🇵🇪'], // Peru
|
|
['PF', '🇵🇫'], // French Polynesia
|
|
['PG', '🇵🇬'], // Papua New Guinea
|
|
['PH', '🇵🇭'], // Philippines
|
|
['PK', '🇵🇰'], // Pakistan
|
|
['PL', '🇵🇱'], // Poland
|
|
['PM', '🇵🇲'], // Saint Pierre and Miquelon
|
|
['PN', '🇵🇳'], // Pitcairn
|
|
['PR', '🇵🇷'], // Puerto Rico
|
|
['PS', '🇵🇸'], // Palestine, State of
|
|
['PT', '🇵🇹'], // Portugal
|
|
['PW', '🇵🇼'], // Palau
|
|
['PY', '🇵🇾'], // Paraguay
|
|
|
|
// Q
|
|
['QA', '🇶🇦'], // Qatar
|
|
|
|
// R
|
|
['RE', '🇷🇪'], // Réunion
|
|
['RO', '🇷🇴'], // Romania
|
|
['RS', '🇷🇸'], // Serbia
|
|
['RU', '🇷🇺'], // Russian Federation
|
|
['RW', '🇷🇼'], // Rwanda
|
|
|
|
// S
|
|
['SA', '🇸🇦'], // Saudi Arabia
|
|
['SB', '🇸🇧'], // Solomon Islands
|
|
['SC', '🇸🇨'], // Seychelles
|
|
['SD', '🇸🇩'], // Sudan
|
|
['SE', '🇸🇪'], // Sweden
|
|
['SG', '🇸🇬'], // Singapore
|
|
['SH', '🇸🇭'], // Saint Helena, Ascension and Tristan da Cunha
|
|
['SI', '🇸🇮'], // Slovenia
|
|
['SJ', '🇸🇯'], // Svalbard and Jan Mayen
|
|
['SK', '🇸🇰'], // Slovakia
|
|
['SL', '🇸🇱'], // Sierra Leone
|
|
['SM', '🇸🇲'], // San Marino
|
|
['SN', '🇸🇳'], // Senegal
|
|
['SO', '🇸🇴'], // Somalia
|
|
['SR', '🇸🇷'], // Suriname
|
|
['SS', '🇸🇸'], // South Sudan
|
|
['ST', '🇸🇹'], // Sao Tome and Principe
|
|
['SV', '🇸🇻'], // El Salvador
|
|
['SX', '🇸🇽'], // Sint Maarten (Dutch part)
|
|
['SY', '🇸🇾'], // Syrian Arab Republic
|
|
['SZ', '🇸🇿'], // Eswatini
|
|
|
|
// T
|
|
['TC', '🇹🇨'], // Turks and Caicos Islands
|
|
['TD', '🇹🇩'], // Chad
|
|
['TF', '🇹🇫'], // French Southern Territories
|
|
['TG', '🇹🇬'], // Togo
|
|
['TH', '🇹🇭'], // Thailand
|
|
['TJ', '🇹🇯'], // Tajikistan
|
|
['TK', '🇹🇰'], // Tokelau
|
|
['TL', '🇹🇱'], // Timor-Leste
|
|
['TM', '🇹🇲'], // Turkmenistan
|
|
['TN', '🇹🇳'], // Tunisia
|
|
['TO', '🇹🇴'], // Tonga
|
|
['TR', '🇹🇷'], // Turkey
|
|
['TT', '🇹🇹'], // Trinidad and Tobago
|
|
['TV', '🇹🇻'], // Tuvalu
|
|
['TW', '🇹🇼'], // Taiwan, Province of China
|
|
['TZ', '🇹🇿'], // Tanzania, United Republic of
|
|
|
|
// U
|
|
['UA', '🇺🇦'], // Ukraine
|
|
['UG', '🇺🇬'], // Uganda
|
|
['UM', '🇺🇲'], // United States Minor Outlying Islands
|
|
['US', '🇺🇸'], // United States
|
|
['UY', '🇺🇾'], // Uruguay
|
|
['UZ', '🇺🇿'], // Uzbekistan
|
|
|
|
// V
|
|
['VA', '🇻🇦'], // Holy See (Vatican City State)
|
|
['VC', '🇻🇨'], // Saint Vincent and the Grenadines
|
|
['VE', '🇻🇪'], // Venezuela
|
|
['VG', '🇻🇬'], // Virgin Islands, British
|
|
['VI', '🇻🇮'], // Virgin Islands, U.S.
|
|
['VN', '🇻🇳'], // Viet Nam
|
|
['VU', '🇻🇺'], // Vanuatu
|
|
|
|
// W
|
|
['WF', '🇼🇫'], // Wallis and Futuna
|
|
['WS', '🇼🇸'], // Samoa
|
|
|
|
// Y
|
|
['YE', '🇾🇪'], // Yemen
|
|
['YT', '🇾🇹'], // Mayotte
|
|
|
|
// Z
|
|
['ZA', '🇿🇦'], // South Africa
|
|
['ZM', '🇿🇲'], // Zambia
|
|
['ZW', '🇿🇼'], // Zimbabwe
|
|
];
|
|
|
|
// Update countries with flag emojis using bulk UPDATE with CASE WHEN
|
|
// Note: countries is a reference table (shared across all tenants), so no tenant filter needed
|
|
if (flagUpdates.length > 0) {
|
|
const codes = flagUpdates.map(([code]) => code);
|
|
const caseWhen = flagUpdates
|
|
.map(([code, emoji]) => `WHEN '${code}' THEN '${emoji}'`)
|
|
.join(' ');
|
|
|
|
await knex.raw(`
|
|
UPDATE countries
|
|
SET flag_emoji = CASE code ${caseWhen} END
|
|
WHERE code IN (${codes.map(code => `'${code}'`).join(', ')})
|
|
`);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @param { import("knex").Knex } knex
|
|
* @returns { Promise<void> }
|
|
*/
|
|
exports.down = async function(knex) {
|
|
// Remove flag_emoji column
|
|
await knex.schema.alterTable('countries', function(table) {
|
|
table.dropColumn('flag_emoji');
|
|
});
|
|
}; |