]> git.openstreetmap.org Git - nominatim.git/commitdiff
simplify sql and website creation functions
authorSarah Hoffmann <lonvia@denofr.de>
Mon, 19 Apr 2021 08:01:17 +0000 (10:01 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Mon, 19 Apr 2021 08:53:30 +0000 (10:53 +0200)
nominatim/clicmd/refresh.py
nominatim/clicmd/replication.py
nominatim/clicmd/setup.py
nominatim/tools/database_import.py
nominatim/tools/migration.py
nominatim/tools/refresh.py
test/bdd/steps/nominatim_environment.py
test/python/test_tools_refresh_create_functions.py
test/python/test_tools_refresh_setup_website.py

index 6a20834427f3abe7de973b986ff292e7ed3b5ad0..ddc00d497bbe786a944664fc64ca0f45e69a70f3 100644 (file)
@@ -64,7 +64,7 @@ class UpdateRefresh:
         if args.functions:
             LOG.warning('Create functions')
             with connect(args.config.get_libpq_dsn()) as conn:
-                refresh.create_functions(conn, args.config, args.sqllib_dir,
+                refresh.create_functions(conn, args.config,
                                          args.diffs, args.enable_debug_statements)
 
         if args.wiki_data:
@@ -85,6 +85,6 @@ class UpdateRefresh:
         if args.website:
             webdir = args.project_dir / 'website'
             LOG.warning('Setting up website directory at %s', webdir)
-            refresh.setup_website(webdir, args.phplib_dir, args.config)
+            refresh.setup_website(webdir, args.config)
 
         return 0
index f8417bd10faf21cdc9f4ef1cc2f3efc29cd720b3..c75322d9bf4c5591b9d252bdd288496424dccf54 100644 (file)
@@ -55,8 +55,7 @@ class UpdateReplication:
             replication.init_replication(conn, base_url=args.config.REPLICATION_URL)
             if args.update_functions:
                 LOG.warning("Create functions")
-                refresh.create_functions(conn, args.config, args.sqllib_dir,
-                                         True, False)
+                refresh.create_functions(conn, args.config, True, False)
         return 0
 
 
index fb7abdeca0a5021e0ab0eb3576ad1841af88728f..2014ff9e2faa32453483cbbef1993def03832bf0 100644 (file)
@@ -81,22 +81,19 @@ class SetupAll:
 
             with connect(args.config.get_libpq_dsn()) as conn:
                 LOG.warning('Create functions (1st pass)')
-                refresh.create_functions(conn, args.config, args.sqllib_dir,
-                                         False, False)
+                refresh.create_functions(conn, args.config, False, False)
                 LOG.warning('Create tables')
-                database_import.create_tables(conn, args.config, args.sqllib_dir,
+                database_import.create_tables(conn, args.config,
                                               reverse_only=args.reverse_only)
                 refresh.load_address_levels_from_file(conn, Path(args.config.ADDRESS_LEVEL_CONFIG))
                 LOG.warning('Create functions (2nd pass)')
-                refresh.create_functions(conn, args.config, args.sqllib_dir,
-                                         False, False)
+                refresh.create_functions(conn, args.config, False, False)
                 LOG.warning('Create table triggers')
-                database_import.create_table_triggers(conn, args.config, args.sqllib_dir)
+                database_import.create_table_triggers(conn, args.config)
                 LOG.warning('Create partition tables')
-                database_import.create_partition_tables(conn, args.config, args.sqllib_dir)
+                database_import.create_partition_tables(conn, args.config)
                 LOG.warning('Create functions (3rd pass)')
-                refresh.create_functions(conn, args.config, args.sqllib_dir,
-                                         False, False)
+                refresh.create_functions(conn, args.config, False, False)
 
             LOG.warning('Importing wikipedia importance data')
             data_path = Path(args.config.WIKIPEDIA_DATA_PATH or args.project_dir)
@@ -130,14 +127,13 @@ class SetupAll:
         LOG.warning('Post-process tables')
         with connect(args.config.get_libpq_dsn()) as conn:
             database_import.create_search_indices(conn, args.config,
-                                                  args.sqllib_dir,
                                                   drop=args.no_updates)
             LOG.warning('Create search index for default country names.')
             database_import.create_country_names(conn, args.config)
 
         webdir = args.project_dir / 'website'
         LOG.warning('Setup website at %s', webdir)
-        refresh.setup_website(webdir, args.phplib_dir, args.config)
+        refresh.setup_website(webdir, args.config)
 
         with connect(args.config.get_libpq_dsn()) as conn:
             try:
index c8a4e51e44ae10e5d6336aeafc5df3507830fc2f..25efedb9a9a6a5ffb2c165df73e2c8a51f4431b4 100644 (file)
@@ -179,7 +179,7 @@ def import_osm_data(osm_file, options, drop=False, ignore_errors=False):
             Path(options['flatnode_file']).unlink()
 
 
-def create_tables(conn, config, sqllib_dir, reverse_only=False):
+def create_tables(conn, config, reverse_only=False):
     """ Create the set of basic tables.
         When `reverse_only` is True, then the main table for searching will
         be skipped and only reverse search is possible.
@@ -190,7 +190,7 @@ def create_tables(conn, config, sqllib_dir, reverse_only=False):
     sql.run_sql_file(conn, 'tables.sql')
 
 
-def create_table_triggers(conn, config, sqllib_dir):
+def create_table_triggers(conn, config):
     """ Create the triggers for the tables. The trigger functions must already
         have been imported with refresh.create_functions().
     """
@@ -198,7 +198,7 @@ def create_table_triggers(conn, config, sqllib_dir):
     sql.run_sql_file(conn, 'table-triggers.sql')
 
 
-def create_partition_tables(conn, config, sqllib_dir):
+def create_partition_tables(conn, config):
     """ Create tables that have explicit partitioning.
     """
     sql = SQLPreprocessor(conn, config)
@@ -287,7 +287,7 @@ def load_data(dsn, data_dir, threads):
             cur.execute('ANALYSE')
 
 
-def create_search_indices(conn, config, sqllib_dir, drop=False):
+def create_search_indices(conn, config, drop=False):
     """ Create tables that have explicit partitioning.
     """
 
index 07fd2ec509d0c552a04789ecfe9a31e01bd39d64..4af5cb4879ef8068c60b2426c4f7d64293a97b6a 100644 (file)
@@ -47,7 +47,7 @@ def migrate(config, paths):
 
         if has_run_migration:
             LOG.warning('Updating SQL functions.')
-            refresh.create_functions(conn, config, paths.sqllib_dir)
+            refresh.create_functions(conn, config)
 
         properties.set_property(conn, 'database_version',
                                 '{0[0]}.{0[1]}.{0[2]}-{0[3]}'.format(NOMINATIM_VERSION))
index 45aa1504652cfe0045d29e9d5625152f7c1bbd06..d38cb216865003c0ce75a9f1f735c3db18a49e19 100644 (file)
@@ -77,8 +77,7 @@ def load_address_levels_from_file(conn, config_file):
         load_address_levels(conn, 'address_levels', json.load(fdesc))
 
 
-def create_functions(conn, config, sqllib_dir,
-                     enable_diff_updates=True, enable_debug=False):
+def create_functions(conn, config, enable_diff_updates=True, enable_debug=False):
     """ (Re)create the PL/pgSQL functions.
     """
     sql = SQLPreprocessor(conn, config)
@@ -165,7 +164,7 @@ def recompute_importance(conn):
     conn.commit()
 
 
-def setup_website(basedir, phplib_dir, config):
+def setup_website(basedir, config):
     """ Create the website script stubs.
     """
     if not basedir.exists():
@@ -179,7 +178,7 @@ def setup_website(basedir, phplib_dir, config):
                       @define('CONST_LibDir', '{0}');
                       @define('CONST_NominatimVersion', '{1[0]}.{1[1]}.{1[2]}-{1[3]}');
 
-                      """.format(phplib_dir, NOMINATIM_VERSION))
+                      """.format(config.lib_dir.php, NOMINATIM_VERSION))
 
     for php_name, conf_name, var_type in PHP_CONST_DEFS:
         if var_type == bool:
@@ -193,7 +192,7 @@ def setup_website(basedir, phplib_dir, config):
 
         template += "@define('CONST_{}', {});\n".format(php_name, varout)
 
-    template += "\nrequire_once('{}/website/{{}}');\n".format(phplib_dir)
+    template += "\nrequire_once('{}/website/{{}}');\n".format(config.lib_dir.php)
 
     for script in WEBSITE_SCRIPTS:
         (basedir / script).write_text(template.format(script), 'utf-8')
index 170dd6392ba1d8b86569c59bea277013348b79c4..6381e4b4a2da8865c89e711910458a2a7fb13d74 100644 (file)
@@ -107,7 +107,8 @@ class NominatimEnvironment:
 
         self.website_dir = tempfile.TemporaryDirectory()
         cfg = Configuration(None, self.src_dir / 'settings', environ=self.test_env)
-        refresh.setup_website(Path(self.website_dir.name) / 'website', self.src_dir / 'lib-php', cfg)
+        cfg.lib_dir.php = self.src_dir / 'lib-php'
+        refresh.setup_website(Path(self.website_dir.name) / 'website', cfg)
 
     def get_libpq_dsn(self):
         dsn = self.test_env['NOMINATIM_DATABASE_DSN']
index 53641cf983f883f0afe175df2287a76f11cb2b88..53ea2b520a2cb207c0d9ac85ddada67604be5d5e 100644 (file)
@@ -27,7 +27,7 @@ def test_create_functions(temp_db_cursor, conn, def_config, sql_tmp_path):
                           $$ LANGUAGE plpgsql IMMUTABLE;
                        """)
 
-    create_functions(conn, def_config, sql_tmp_path)
+    create_functions(conn, def_config)
 
     assert temp_db_cursor.scalar('SELECT test()') == 43
 
@@ -47,6 +47,6 @@ def test_create_functions_with_template(temp_db_cursor, conn, def_config, sql_tm
                           $$ LANGUAGE plpgsql IMMUTABLE;
                        """)
 
-    create_functions(conn, def_config, sql_tmp_path, enable_debug=dbg)
+    create_functions(conn, def_config, enable_debug=dbg)
 
     assert temp_db_cursor.scalar('SELECT test()') == ret
index 126fc561d020af781d5d6bf21bf20732152f6b19..18b146fc22b4b07b5c4696bf2f0c8a7cfea30bd6 100644 (file)
@@ -25,7 +25,8 @@ def test_script(envdir):
 
 
 def run_website_script(envdir, config):
-    refresh.setup_website(envdir, envdir / 'php', config)
+    config.lib_dir.php = envdir / 'php'
+    refresh.setup_website(envdir, config)
 
     proc = subprocess.run(['/usr/bin/env', 'php', '-Cq',
                            envdir / 'search.php'], check=False)