Spaces:
Build error
Build error
| import json | |
| import os | |
| from typing import Optional, Dict, Any | |
| class FAQDatabase: | |
| """JSON file store representing rich FAQ metadata.""" | |
| def __init__(self, db_path: str = "faq_metadata.json"): | |
| self.db_path = db_path | |
| self._init_db() | |
| def _init_db(self): | |
| """Create the JSON file if it doesn't exist.""" | |
| if not os.path.exists(self.db_path): | |
| with open(self.db_path, 'w', encoding='utf-8') as f: | |
| json.dump({}, f) | |
| def _load_data(self) -> Dict[str, dict]: | |
| """Load data from the JSON file.""" | |
| if not os.path.exists(self.db_path): | |
| return {} | |
| with open(self.db_path, 'r', encoding='utf-8') as f: | |
| try: | |
| return json.load(f) | |
| except json.JSONDecodeError: | |
| return {} | |
| def _save_data(self, data: Dict[str, dict]): | |
| """Save data to the JSON file.""" | |
| with open(self.db_path, 'w', encoding='utf-8') as f: | |
| json.dump(data, f, indent=4, ensure_ascii=False) | |
| def insert_qa(self, faqs: list[Dict[str, Any]]): | |
| """Insert multiple Q-A records into the JSON file.""" | |
| data = self._load_data() | |
| for f in faqs: | |
| # We enforce saving all fields as they were passed in | |
| faq_id = f.get("faq_id") | |
| if faq_id: | |
| data[faq_id] = f | |
| self._save_data(data) | |
| def get_qa(self, faq_id: str) -> Optional[Dict[str, Any]]: | |
| """Retrieve a single QA record by ID.""" | |
| data = self._load_data() | |
| return data.get(faq_id) | |
| def delete_all(self): | |
| """Clear all records from the JSON file.""" | |
| self._save_data({}) | |
| def count(self) -> int: | |
| """Count total records in the JSON file.""" | |
| data = self._load_data() | |
| return len(data) | |
| if __name__ == "__main__": | |
| db = FAQDatabase() | |
| print(f"Database initialized at {os.path.abspath(db.db_path)}") | |
| print(f"Total records: {db.count()}") | |