]> git.openstreetmap.org Git - nominatim.git/blob - src/nominatim_db/db/properties.py
fix style issue found by flake8
[nominatim.git] / src / nominatim_db / db / properties.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 Query and access functions for the in-database property table.
9 """
10 from typing import Optional, cast
11
12 from .connection import Connection, table_exists
13
14
15 def set_property(conn: Connection, name: str, value: str) -> None:
16     """ Add or replace the property with the given name.
17     """
18     with conn.cursor() as cur:
19         cur.execute('SELECT value FROM nominatim_properties WHERE property = %s',
20                     (name, ))
21
22         if cur.rowcount == 0:
23             sql = 'INSERT INTO nominatim_properties (value, property) VALUES (%s, %s)'
24         else:
25             sql = 'UPDATE nominatim_properties SET value = %s WHERE property = %s'
26
27         cur.execute(sql, (value, name))
28     conn.commit()
29
30
31 def get_property(conn: Connection, name: str) -> Optional[str]:
32     """ Return the current value of the given property or None if the property
33         is not set.
34     """
35     if not table_exists(conn, 'nominatim_properties'):
36         return None
37
38     with conn.cursor() as cur:
39         cur.execute('SELECT value FROM nominatim_properties WHERE property = %s',
40                     (name, ))
41
42         if cur.rowcount == 0:
43             return None
44
45         result = cur.fetchone()
46         assert result is not None
47
48         return cast(Optional[str], result[0])