from __future__ import annotations from services.db.mysql_service import DatabaseService class UserProfileRepository: """td_user_profile 테이블을 통한 사용자 장기 메모리 저장소.""" def __init__(self, db: DatabaseService): self._db = db def remember(self, key: str, value: str, user_id: str = "default") -> None: self._db.execute_write( """INSERT INTO td_user_profile (user_id, key_name, value) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE value = VALUES(value), updated_at = NOW()""", (user_id, key, value), ) def recall(self, key: str, user_id: str = "default") -> str | None: rows = self._db.execute( "SELECT value FROM td_user_profile WHERE user_id = %s AND key_name = %s", (user_id, key), ) return rows[0]["value"] if rows else None def get_all(self, user_id: str = "default") -> dict[str, str]: rows = self._db.execute( "SELECT key_name, value FROM td_user_profile WHERE user_id = %s ORDER BY updated_at", (user_id,), ) return {r["key_name"]: r["value"] for r in rows}