#!/usr/bin/env python3
import json
from datetime import datetime, timezone
from pathlib import Path


class MemoryStore:
    def __init__(self):
        self.records = {}
        self.events = []

    def upsert(self, user_id, key, value, source):
        version = self.records.get((user_id, key), {}).get("version", 0) + 1
        record = {
            "user_id": user_id,
            "key": key,
            "value": value,
            "source": source,
            "version": version,
            "updated_at": datetime.now(timezone.utc).isoformat(),
        }
        self.records[(user_id, key)] = record
        self.events.append({"action": "upsert", "key": key, "version": version})

    def delete(self, user_id, key):
        existed = self.records.pop((user_id, key), None) is not None
        self.events.append({"action": "delete", "key": key, "existed": existed})

    def read(self, user_id, key):
        return self.records.get((user_id, key))


store = MemoryStore()
store.upsert("user_demo", "drink", "coffee", "conversation-1")
store.upsert("user_demo", "drink", "tea", "conversation-2")
current_before_delete = store.read("user_demo", "drink")
store.delete("user_demo", "drink")
result = {
    "current_before_delete": current_before_delete,
    "current_after_delete": store.read("user_demo", "drink"),
    "events": store.events,
}
Path(__file__).with_name("experiment-result.json").write_text(
    json.dumps(result, ensure_ascii=False, indent=2) + "\n", encoding="utf-8"
)
print(json.dumps(result, ensure_ascii=False, indent=2))
