X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/5d7d7f15d9ca4241669300729d4ac6dea7e3a537..28101967ef5b89b85f492304b1002b8a85e6fe21:/nominatim/tools/add_osm_data.py diff --git a/nominatim/tools/add_osm_data.py b/nominatim/tools/add_osm_data.py index fa356673..1814b921 100644 --- a/nominatim/tools/add_osm_data.py +++ b/nominatim/tools/add_osm_data.py @@ -1,27 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# This file is part of Nominatim. (https://nominatim.org) +# +# Copyright (C) 2022 by the Nominatim developer community. +# For a full list of authors see the git log. """ Function to add additional OSM data from a file or the API into the database. """ +from typing import Any, MutableMapping 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, options): +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, osm_id, use_main_api, options): +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. """ @@ -43,4 +62,6 @@ def add_osm_object(osm_type, osm_id, use_main_api, options): options['append'] = True options['import_data'] = get_url(base_url).encode('utf-8') - run_osm2pgsql(options) + _run_osm2pgsql(dsn, options) + + return 0