X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/17bbe2637a32e93b19ff887a896bf1b444cd9792..3fb739de9275680d4f482d363f22c535442f0017:/nominatim/tools/add_osm_data.py diff --git a/nominatim/tools/add_osm_data.py b/nominatim/tools/add_osm_data.py index d5d01754..1814b921 100644 --- a/nominatim/tools/add_osm_data.py +++ b/nominatim/tools/add_osm_data.py @@ -12,24 +12,35 @@ from pathlib import Path import logging import urllib +from nominatim.db.connection import connect from nominatim.tools.exec_utils import run_osm2pgsql, get_url LOG = logging.getLogger() -def add_data_from_file(fname: str, options: MutableMapping[str, Any]) -> int: +def _run_osm2pgsql(dsn: str, options: MutableMapping[str, Any]) -> None: + run_osm2pgsql(options) + + # Handle deletions + with connect(dsn) as conn: + with conn.cursor() as cur: + cur.execute('SELECT flush_deleted_places()') + conn.commit() + + +def add_data_from_file(dsn: str, fname: str, options: MutableMapping[str, Any]) -> int: """ Adds data from a OSM file to the database. The file may be a normal OSM file or a diff file in all formats supported by libosmium. """ options['import_file'] = Path(fname) options['append'] = True - run_osm2pgsql(options) + _run_osm2pgsql(dsn, options) # No status update. We don't know where the file came from. return 0 -def add_osm_object(osm_type: str, osm_id: int, use_main_api: bool, - options: MutableMapping[str, Any]) -> None: +def add_osm_object(dsn: str, osm_type: str, osm_id: int, use_main_api: bool, + options: MutableMapping[str, Any]) -> int: """ Add or update a single OSM object from the latest version of the API. """ @@ -51,4 +62,6 @@ def add_osm_object(osm_type: str, osm_id: int, use_main_api: bool, options['append'] = True options['import_data'] = get_url(base_url).encode('utf-8') - run_osm2pgsql(options) + _run_osm2pgsql(dsn, options) + + return 0