"""
-Access and helper functions for the status table.
+Access and helper functions for the status and status log table.
"""
import datetime as dt
import logging
import re
from ..tools.exec_utils import get_url
+from ..errors import UsageError
LOG = logging.getLogger()
if osmid is None:
LOG.fatal("No data found in the database.")
- raise RuntimeError("No data found in the database.")
+ raise UsageError("No data found in the database.")
LOG.info("Using node id %d for timestamp lookup", osmid)
# Get the node from the API to find the timestamp when it was created.
if match is None:
LOG.fatal("The node data downloaded from the API does not contain valid data.\n"
"URL used: %s", node_url)
- raise RuntimeError("Bad API data.")
+ raise UsageError("Bad API data.")
LOG.debug("Found timestamp %s", match[1])
row = cur.fetchone()
return row['lastimportdate'], row['sequence_id'], row['indexed']
+
+
+def set_indexed(conn, state):
+ """ Set the indexed flag in the status table to the given state.
+ """
+ with conn.cursor() as cur:
+ cur.execute("UPDATE import_status SET indexed = %s", (state, ))
+ conn.commit()
+
+
+def log_status(conn, start, event, batchsize=None):
+ """ Write a new status line to the `import_osmosis_log` table.
+ """
+ with conn.cursor() as cur:
+ cur.execute("""INSERT INTO import_osmosis_log
+ (batchend, batchseq, batchsize, starttime, endtime, event)
+ SELECT lastimportdate, sequence_id, %s, %s, now(), %s FROM import_status""",
+ (batchsize, start, event))