lockIn / assistant /storage.py
Kankshi's picture
Upload 21 files
c35855b verified
Raw
History Blame Contribute Delete
1.96 kB
import os
import json
# Base paths relative to the backend root
BASE_DIR = os.path.join(os.path.dirname(__file__), '..', 'data')
DOCUMENTS_DIR = os.path.join(BASE_DIR, 'documents')
METADATA_FILE = os.path.join(BASE_DIR, 'metadata.json')
# Ensure directories exist on import
os.makedirs(DOCUMENTS_DIR, exist_ok=True)
def _load_metadata() -> dict:
"""Load metadata from disk. Returns empty dict if file doesn't exist."""
if not os.path.exists(METADATA_FILE):
return {}
with open(METADATA_FILE, 'r', encoding='utf-8') as f:
return json.load(f)
def _write_metadata(metadata: dict):
"""Persist metadata dict to disk."""
with open(METADATA_FILE, 'w', encoding='utf-8') as f:
json.dump(metadata, f, indent=2)
def generate_doc_id() -> str:
"""Auto-increment doc IDs: doc1, doc2, doc3 ..."""
metadata = _load_metadata()
next_index = len(metadata) + 1
return f"doc{next_index}"
def save_document(doc_id: str, text: str):
"""Save extracted document text to data/documents/{doc_id}.txt"""
filepath = os.path.join(DOCUMENTS_DIR, f"{doc_id}.txt")
with open(filepath, 'w', encoding='utf-8') as f:
f.write(text)
def load_document(doc_id: str) -> str | None:
"""Load document text from disk. Returns None if not found."""
filepath = os.path.join(DOCUMENTS_DIR, f"{doc_id}.txt")
if not os.path.exists(filepath):
return None
with open(filepath, 'r', encoding='utf-8') as f:
return f.read()
def save_metadata(doc_id: str, filename: str):
"""Append a new document entry to metadata.json."""
metadata = _load_metadata()
metadata[doc_id] = {"filename": filename}
_write_metadata(metadata)
def get_all_docs() -> list:
"""Return list of all uploaded document IDs and their filenames."""
metadata = _load_metadata()
return [{"doc_id": doc_id, "filename": info.get("filename", "")}
for doc_id, info in metadata.items()]