Spaces:
Sleeping
Sleeping
| """Utilities for handling deal memory and persistence.""" | |
| from datetime import datetime, timezone | |
| from typing import Dict, List | |
| from src.config.constants import DEALS_FILE | |
| from src.utils.file_io import load_json, write_json | |
| def save_opportunities_to_memory( | |
| new_opportunities: List[Dict], memory_path: str = DEALS_FILE | |
| ) -> None: | |
| """Updates opportunities with deduplication and saves to memory.""" | |
| existing_data = load_json(memory_path) or {"opportunities": []} | |
| all_opportunities = existing_data.get("opportunities", []) + new_opportunities | |
| unique_by_url = {op["url"]: op for op in all_opportunities} | |
| final_list = list(unique_by_url.values()) | |
| write_json( | |
| memory_path, | |
| { | |
| "opportunities": final_list, | |
| "last_updated": datetime.now(timezone.utc).isoformat(), | |
| }, | |
| ) | |