in scripts/metric_reporter/reporter/suite_reporter.py [0:0]
def _get_last_update(self, client: Client, table_id: str) -> datetime | None:
query = f"""
SELECT FORMAT_TIMESTAMP('{DATETIME_FORMAT}', MAX(`Timestamp`)) as last_update
FROM `{table_id}`
WHERE Repository = @repository AND Workflow = @workflow AND `Test Suite` = @test_suite
""" # nosec
query_parameters = [
ScalarQueryParameter("repository", "STRING", self.repository),
ScalarQueryParameter("workflow", "STRING", self.workflow),
ScalarQueryParameter("test_suite", "STRING", self.test_suite),
]
job_config = QueryJobConfig(query_parameters=query_parameters)
try:
query_job = client.query(query, job_config=job_config)
result = query_job.result()
for row in result:
last_update: str | None = row["last_update"]
return datetime.strptime(last_update, DATETIME_FORMAT) if last_update else None
except (GoogleAPIError, TypeError, ValueError) as error:
error_mapping: dict[type, str] = {
GoogleAPIError: f"Error executing query: {query}",
TypeError: f"The query, {query}, has an invalid format or type",
ValueError: f"The table name {table_id} is invalid",
}
error_msg: str = next(m for t, m in error_mapping.items() if isinstance(error, t))
self.logger.error(error_msg, exc_info=error)
raise ReporterError(error_msg) from error
return None