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) { foreach ($aLanguages as $sLanguage => $fLanguagePref) {
$aLangPrefOrder['name:'.$sLanguage] = 'name:'.$sLanguage; $aLangPrefOrder[$sLanguage] = $sLanguage;
} }
$aLangPrefOrder['name'] = 'name';
$aLangPrefOrder['default'] = 'default';
$aLangPrefOrder['brand'] = 'brand'; $aLangPrefOrder['brand'] = 'brand';
foreach ($aLanguages as $sLanguage => $fLanguagePref) { foreach ($aLanguages as $sLanguage => $fLanguagePref) {
$aLangPrefOrder['official_name:'.$sLanguage] = 'official_name:'.$sLanguage; $aLangPrefOrder['official_name:'.$sLanguage] = 'official_name:'.$sLanguage;

View File

@@ -43,8 +43,9 @@ BEGIN
END IF; END IF;
END LOOP; END LOOP;
-- change this code below
-- anything will do as a fallback - just take the first name type thing there is -- 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; END;
$$ $$
LANGUAGE plpgsql IMMUTABLE; LANGUAGE plpgsql IMMUTABLE;
@@ -56,6 +57,7 @@ CREATE OR REPLACE FUNCTION get_address_by_language(for_place_id BIGINT,
languagepref TEXT[]) languagepref TEXT[])
RETURNS TEXT RETURNS TEXT
AS $$ AS $$
-- ARRAY['zh','default','brand','official_name:zh','short_name:zh','official_name','short_name','ref','type']
DECLARE DECLARE
result TEXT[]; result TEXT[];
currresult 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 lang = props['languages'][0] if len(props['languages']) == 1 else None
params.append((ccode, partition, lang)) 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' country_names_data += ccode + '\t' + name[1:-1] + '\n'
with connect(dsn) as conn: with connect(dsn) as conn:
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute( cur.execute(
"""CREATE TABLE public.country_name ( """ CREATE TABLE public.country_name (
country_code character varying(2), country_code character varying(2),
name public.hstore, name public.hstore,
derived_name public.hstore, derived_name public.hstore,
country_default_language_code text, country_default_language_code text,
partition integer partition integer
);""") ); """)
data = StringIO(country_names_data) data = StringIO(country_names_data)
cur.copy_from(data, 'country_name', columns=('country_code', 'name')) cur.copy_from(data, 'country_name', columns=('country_code', 'name'))
cur.execute_values( cur.execute_values(
@@ -109,8 +110,8 @@ def create_country_names(conn, tokenizer, languages=None):
languages = languages.split(',') languages = languages.split(',')
def _include_key(key): def _include_key(key):
return key == 'name' or \ return key == 'default' or \
(key.startswith('name:') and (not languages or key[5:] in languages)) (not languages or key in languages)
with conn.cursor() as cur: with conn.cursor() as cur:
psycopg2.extras.register_hstore(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' => '')); $oParams = new ParameterParser(array('accept-language' => ''));
$this->assertSame(array( $this->assertSame(array(
'name:default' => 'name:default', 'default' => 'default',
'name' => 'name',
'brand' => 'brand', 'brand' => 'brand',
'official_name:default' => 'official_name:default', 'official_name:default' => 'official_name:default',
'short_name:default' => 'short_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')); $oParams = new ParameterParser(array('accept-language' => 'de,en'));
$this->assertSame(array( $this->assertSame(array(
'name:de' => 'name:de', 'de' => 'de',
'name:en' => 'name:en', 'en' => 'en',
'name' => 'name', 'name' => 'name',
'brand' => 'brand', 'brand' => 'brand',
'official_name:de' => 'official_name:de', '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')); $oParams = new ParameterParser(array('accept-language' => 'fr-ca,fr;q=0.8,en-ca;q=0.5,en;q=0.3'));
$this->assertSame(array( $this->assertSame(array(
'name:fr-ca' => 'name:fr-ca', 'fr-ca' => 'fr-ca',
'name:fr' => 'name:fr', 'fr' => 'fr',
'name:en-ca' => 'name:en-ca', 'en-ca' => 'en-ca',
'name:en' => 'name:en', 'en' => 'en',
'name' => 'name', 'name' => 'name',
'brand' => 'brand', 'brand' => 'brand',
'official_name:fr-ca' => 'official_name:fr-ca', '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')); $oParams = new ParameterParser(array('accept-language' => 'ja_rm,zh_pinyin'));
$this->assertSame(array( $this->assertSame(array(
'name:ja_rm' => 'name:ja_rm', 'ja_rm' => 'ja_rm',
'name:zh_pinyin' => 'name:zh_pinyin', 'zh_pinyin' => 'zh_pinyin',
'name:ja' => 'name:ja', 'ja' => 'ja',
'name:zh' => 'name:zh', 'zh' => 'zh',
'name' => 'name', 'name' => 'name',
'brand' => 'brand', 'brand' => 'brand',
'official_name:ja_rm' => 'official_name:ja_rm', 'official_name:ja_rm' => 'official_name:ja_rm',