]> git.openstreetmap.org Git - nominatim.git/blob - src/nominatim_db/clicmd/freeze.py
split code into submodules
[nominatim.git] / src / nominatim_db / clicmd / freeze.py
1 # SPDX-License-Identifier: GPL-3.0-or-later
2 #
3 # This file is part of Nominatim. (https://nominatim.org)
4 #
5 # Copyright (C) 2024 by the Nominatim developer community.
6 # For a full list of authors see the git log.
7 """
8 Implementation of the 'freeze' subcommand.
9 """
10 import argparse
11
12 from nominatim_core.db.connection import connect
13 from .args import NominatimArgs
14
15 # Do not repeat documentation of subcommand classes.
16 # pylint: disable=C0111
17 # Using non-top-level imports to avoid eventually unused imports.
18 # pylint: disable=E0012,C0415
19
20 class SetupFreeze:
21     """\
22     Make database read-only.
23
24     About half of data in the Nominatim database is kept only to be able to
25     keep the data up-to-date with new changes made in OpenStreetMap. This
26     command drops all this data and only keeps the part needed for geocoding
27     itself.
28
29     This command has the same effect as the `--no-updates` option for imports.
30     """
31
32     def add_args(self, parser: argparse.ArgumentParser) -> None:
33         pass # No options
34
35
36     def run(self, args: NominatimArgs) -> int:
37         from ..tools import freeze
38
39         with connect(args.config.get_libpq_dsn()) as conn:
40             freeze.drop_update_tables(conn)
41         freeze.drop_flatnode_file(args.config.get_path('FLATNODE_FILE'))
42
43         return 0