File size: 846 Bytes
8366946
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
"""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(),
        },
    )