query_parts = [ "SELECT * FROM origin_visit_status ", "WHERE origin = %s AND visit = %s ", ] query_params: List[Any] = [origin, visit] if require_snapshot: query_parts.append("AND snapshot is not null ") if allowed_statuses: query_parts.append("AND status IN %s ") query_params.append(tuple(allowed_statuses)) query_parts.append("ORDER BY date DESC LIMIT 1") query = "\n".join(query_parts) rows = list(self._execute_with_retries(query, query_params)) if not rows: return None row = rows[0] visit_status = row._asdict() visit_status['metadata'] = json.loads(row.metadata) if row.metadata else None return visit_status