adapt status to use SQLAlchemy tables

This commit is contained in:
Sarah Hoffmann
2023-01-26 17:55:46 +01:00
parent 23f2690c54
commit 2e9090d121

View File

@@ -12,7 +12,6 @@ import datetime as dt
import dataclasses import dataclasses
import sqlalchemy as sa import sqlalchemy as sa
import asyncpg
from nominatim.api.connection import SearchConnection from nominatim.api.connection import SearchConnection
from nominatim import version from nominatim import version
@@ -28,37 +27,20 @@ class StatusResult:
database_version: Optional[version.NominatimVersion] = None database_version: Optional[version.NominatimVersion] = None
async def _get_database_date(conn: SearchConnection) -> Optional[dt.datetime]:
""" Query the database date.
"""
sql = sa.text('SELECT lastimportdate FROM import_status LIMIT 1')
result = await conn.execute(sql)
for row in result:
return cast(dt.datetime, row[0])
return None
async def _get_database_version(conn: SearchConnection) -> Optional[version.NominatimVersion]:
sql = sa.text("""SELECT value FROM nominatim_properties
WHERE property = 'database_version'""")
result = await conn.execute(sql)
for row in result:
return version.parse_version(cast(str, row[0]))
return None
async def get_status(conn: SearchConnection) -> StatusResult: async def get_status(conn: SearchConnection) -> StatusResult:
""" Execute a status API call. """ Execute a status API call.
""" """
status = StatusResult(0, 'OK') status = StatusResult(0, 'OK')
try:
status.data_updated = await _get_database_date(conn) # Last update date
status.database_version = await _get_database_version(conn) sql = sa.select(conn.t.import_status.c.lastimportdate).limit(1)
except asyncpg.PostgresError: status.data_updated = await conn.scalar(sql)
return StatusResult(700, 'Database connection failed')
# Database version
sql = sa.select(conn.t.properties.c.value)\
.where(conn.t.properties.c.property == 'database_version')
verstr = await conn.scalar(sql)
if verstr is not None:
status.database_version = version.parse_version(cast(str, verstr))
return status return status