Reformatting of country keys

This commit is contained in:
Tareq Al-Ahdal
2022-03-18 02:23:11 +08:00
parent b4bd4ff67d
commit 456d439e97
5 changed files with 26800 additions and 271 deletions

View File

@@ -114,9 +114,10 @@ class ParameterParser
}
foreach ($aLanguages as $sLanguage => $fLanguagePref) {
$aLangPrefOrder['name:'.$sLanguage] = 'name:'.$sLanguage;
$aLangPrefOrder[$sLanguage] = $sLanguage;
}
$aLangPrefOrder['name'] = 'name';
$aLangPrefOrder['default'] = 'default';
$aLangPrefOrder['brand'] = 'brand';
foreach ($aLanguages as $sLanguage => $fLanguagePref) {
$aLangPrefOrder['official_name:'.$sLanguage] = 'official_name:'.$sLanguage;

View File

@@ -43,8 +43,9 @@ BEGIN
END IF;
END LOOP;
-- change this code below
-- anything will do as a fallback - just take the first name type thing there is
RETURN trim((avals(name))[1]);
RETURN trim((avals(name))[array_length(avals(name), 1)]);
END;
$$
LANGUAGE plpgsql IMMUTABLE;
@@ -56,6 +57,7 @@ CREATE OR REPLACE FUNCTION get_address_by_language(for_place_id BIGINT,
languagepref TEXT[])
RETURNS TEXT
AS $$
-- ARRAY['zh','default','brand','official_name:zh','short_name:zh','official_name','short_name','ref','type']
DECLARE
result TEXT[];
currresult TEXT;

View File

@@ -76,19 +76,20 @@ def setup_country_tables(dsn, sql_dir, ignore_partitions=False):
lang = props['languages'][0] if len(props['languages']) == 1 else None
params.append((ccode, partition, lang))
name = json.dumps(props.get('name'), ensure_ascii=False, separators=(', ', '=>'))
name = json.dumps(props.get('names').get('name'), ensure_ascii=False,
separators=(', ', '=>'))
country_names_data += ccode + '\t' + name[1:-1] + '\n'
with connect(dsn) as conn:
with conn.cursor() as cur:
cur.execute(
"""CREATE TABLE public.country_name (
""" CREATE TABLE public.country_name (
country_code character varying(2),
name public.hstore,
derived_name public.hstore,
country_default_language_code text,
partition integer
);""")
); """)
data = StringIO(country_names_data)
cur.copy_from(data, 'country_name', columns=('country_code', 'name'))
cur.execute_values(
@@ -109,8 +110,8 @@ def create_country_names(conn, tokenizer, languages=None):
languages = languages.split(',')
def _include_key(key):
return key == 'name' or \
(key.startswith('name:') and (not languages or key[5:] in languages))
return key == 'default' or \
(not languages or key in languages)
with conn.cursor() as cur:
psycopg2.extras.register_hstore(cur)

File diff suppressed because one or more lines are too long

View File

@@ -183,8 +183,7 @@ class ParameterParserTest extends \PHPUnit\Framework\TestCase
{
$oParams = new ParameterParser(array('accept-language' => ''));
$this->assertSame(array(
'name:default' => 'name:default',
'name' => 'name',
'default' => 'default',
'brand' => 'brand',
'official_name:default' => 'official_name:default',
'short_name:default' => 'short_name:default',
@@ -196,8 +195,8 @@ class ParameterParserTest extends \PHPUnit\Framework\TestCase
$oParams = new ParameterParser(array('accept-language' => 'de,en'));
$this->assertSame(array(
'name:de' => 'name:de',
'name:en' => 'name:en',
'de' => 'de',
'en' => 'en',
'name' => 'name',
'brand' => 'brand',
'official_name:de' => 'official_name:de',
@@ -212,10 +211,10 @@ class ParameterParserTest extends \PHPUnit\Framework\TestCase
$oParams = new ParameterParser(array('accept-language' => 'fr-ca,fr;q=0.8,en-ca;q=0.5,en;q=0.3'));
$this->assertSame(array(
'name:fr-ca' => 'name:fr-ca',
'name:fr' => 'name:fr',
'name:en-ca' => 'name:en-ca',
'name:en' => 'name:en',
'fr-ca' => 'fr-ca',
'fr' => 'fr',
'en-ca' => 'en-ca',
'en' => 'en',
'name' => 'name',
'brand' => 'brand',
'official_name:fr-ca' => 'official_name:fr-ca',
@@ -234,10 +233,10 @@ class ParameterParserTest extends \PHPUnit\Framework\TestCase
$oParams = new ParameterParser(array('accept-language' => 'ja_rm,zh_pinyin'));
$this->assertSame(array(
'name:ja_rm' => 'name:ja_rm',
'name:zh_pinyin' => 'name:zh_pinyin',
'name:ja' => 'name:ja',
'name:zh' => 'name:zh',
'ja_rm' => 'ja_rm',
'zh_pinyin' => 'zh_pinyin',
'ja' => 'ja',
'zh' => 'zh',
'name' => 'name',
'brand' => 'brand',
'official_name:ja_rm' => 'official_name:ja_rm',