# retoor from .core import datetime, db, get_table, timezone def _ds_now() -> str: return datetime.now(timezone.utc).isoformat() def create_deepsearch_session( uid: str, owner_kind: str, owner_id: str, query: str, depth: int, max_pages: int, collection: str, ) -> None: get_table("deepsearch_sessions").insert( { "uid": uid, "owner_kind": owner_kind, "owner_id": owner_id, "query": query, "status": "pending", "depth": depth, "max_pages": max_pages, "score": 0, "confidence": 0.0, "source_diversity": 0.0, "page_count": 0, "chunk_count": 0, "collection": collection, "summary": "", "created_at": _ds_now(), "completed_at": "", "deleted_at": None, "deleted_by": None, } ) def update_deepsearch_session(uid: str, fields: dict) -> None: if "deepsearch_sessions" not in db.tables: return payload = dict(fields) payload["uid"] = uid get_table("deepsearch_sessions").update(payload, ["uid"]) def get_deepsearch_session(uid: str) -> dict | None: if "deepsearch_sessions" not in db.tables: return None return get_table("deepsearch_sessions").find_one(uid=uid, deleted_at=None) def add_deepsearch_message( uid: str, session_uid: str, role: str, content: str, citations: str = "" ) -> None: get_table("deepsearch_messages").insert( { "uid": uid, "session_uid": session_uid, "role": role, "content": content, "citations": citations, "created_at": _ds_now(), "deleted_at": None, "deleted_by": None, } ) def get_deepsearch_messages(session_uid: str, limit: int = 50) -> list[dict]: if "deepsearch_messages" not in db.tables: return [] return list( get_table("deepsearch_messages").find( session_uid=session_uid, deleted_at=None, order_by=["created_at"], _limit=limit, ) ) def get_cached_deepsearch_url(url_hash: str) -> dict | None: if "deepsearch_url_cache" not in db.tables: return None return get_table("deepsearch_url_cache").find_one(url_hash=url_hash) def upsert_deepsearch_url_cache( url_hash: str, url: str, title: str, content_hash: str, status: int, byte_size: int, ) -> None: table = get_table("deepsearch_url_cache") existing = table.find_one(url_hash=url_hash) row = { "url_hash": url_hash, "url": url, "title": title, "content_hash": content_hash, "status": status, "byte_size": byte_size, "fetched_at": _ds_now(), } if existing: row["uid"] = existing["uid"] table.update(row, ["uid"]) else: from devplacepy.utils import generate_uid row["uid"] = generate_uid() table.insert(row)