backend/feature/recompute-trip-time #62
| @@ -29,7 +29,7 @@ def configure_logging(): | |||||||
|  |  | ||||||
|         logger.info(f"Logging to Loki at {loki_url} with {loki_handler.labels} and {is_debug=}") |         logger.info(f"Logging to Loki at {loki_url} with {loki_handler.labels} and {is_debug=}") | ||||||
|         logging_handlers = [loki_handler, logging.StreamHandler()] |         logging_handlers = [loki_handler, logging.StreamHandler()] | ||||||
|         logging_level = logging.DEBUG if is_debug else logging.INFO |         logging_level = logging.DEBUG | ||||||
|         # silence the chatty logs loki generates itself |         # silence the chatty logs loki generates itself | ||||||
|         logging.getLogger('urllib3.connectionpool').setLevel(logging.WARNING) |         logging.getLogger('urllib3.connectionpool').setLevel(logging.WARNING) | ||||||
|         # no need for time since it's added by loki or can be shown in kube logs |         # no need for time since it's added by loki or can be shown in kube logs | ||||||
| @@ -39,7 +39,7 @@ def configure_logging(): | |||||||
|         # if we are in a debug (local) session, set verbose and rich logging |         # if we are in a debug (local) session, set verbose and rich logging | ||||||
|         from rich.logging import RichHandler |         from rich.logging import RichHandler | ||||||
|         logging_handlers = [RichHandler()] |         logging_handlers = [RichHandler()] | ||||||
|         logging_level = logging.DEBUG if is_debug else logging.INFO |         logging_level = logging.DEBUG | ||||||
|         logging_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' |         logging_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -179,6 +179,45 @@ def get_landmark(landmark_uuid: str) -> Landmark: | |||||||
|         raise HTTPException(status_code=404, detail="Landmark not found") from exc |         raise HTTPException(status_code=404, detail="Landmark not found") from exc | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @app.post("/trip/recompute-time/{trip_uuid}/{removed_landmark_uuid}") | ||||||
|  | def update_trip_time(trip_uuid: str, removed_landmark_uuid: str) -> Trip: | ||||||
|  |     """ | ||||||
|  |     Updates the reaching times of a given trip when removing a landmark. | ||||||
|  |  | ||||||
|  |     Args: | ||||||
|  |         landmark_uuid (str) : unique identifier for a Landmark. | ||||||
|  |  | ||||||
|  |     Returns: | ||||||
|  |         (Landmark)          : the corresponding Landmark. | ||||||
|  |     """ | ||||||
|  |     # First, fetch the trip in the cache. | ||||||
|  |     try: | ||||||
|  |         trip = cache_client.get(f'trip_{trip_uuid}') | ||||||
|  |     except KeyError as exc: | ||||||
|  |         raise HTTPException(status_code=404, detail='Trip not found') from exc | ||||||
|  |  | ||||||
|  |     landmarks = [] | ||||||
|  |     next_uuid = trip.first_landmark_uuid | ||||||
|  |  | ||||||
|  |     # Extract landmarks | ||||||
|  |     try : | ||||||
|  |         while next_uuid is not None: | ||||||
|  |             landmark = cache_client.get(f'landmark_{next_uuid}') | ||||||
|  |             # Filter out the removed landmark. | ||||||
|  |             if next_uuid != removed_landmark_uuid : | ||||||
|  |                 landmarks.append(landmark) | ||||||
|  |             next_uuid = landmark.next_uuid  # Prepare for the next iteration | ||||||
|  |     except KeyError as exc: | ||||||
|  |         raise HTTPException(status_code=404, detail=f'landmark {next_uuid} not found') from exc | ||||||
|  |  | ||||||
|  |     # Re-link every thing and compute times again | ||||||
|  |     linked_tour = LinkedLandmarks(landmarks) | ||||||
|  |     trip = Trip.from_linked_landmarks(linked_tour, cache_client) | ||||||
|  |  | ||||||
|  |     return trip | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @app.post("/toilets/new") | @app.post("/toilets/new") | ||||||
| def get_toilets(location: tuple[float, float] = Query(...), radius: int = 500) -> list[Toilets] : | def get_toilets(location: tuple[float, float] = Query(...), radius: int = 500) -> list[Toilets] : | ||||||
|     """ |     """ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user