fix: Correct database API usage in stats command - achieve 100% system health
Fixed the database connection error that was causing degraded system health by using the proper DatabaseManager API instead of non-existent methods. ## Root Cause Analysis: - **Issue**: `_show_core_system_stats()` tried to call `db_manager.get_connection()` - **Problem**: DatabaseManager class doesn't have a `get_connection()` method - **Impact**: System health reported as "Degraded (66.7%)" due to database unavailability ## Why No Tests Caught This: 1. **Existing tests** only test public API methods (`store_markdown_file`, `get_markdown_file`, etc.) 2. **No tests existed** for `get_connection()` because the method doesn't exist 3. **New stats function** was the first code to assume this method existed 4. **Database pattern**: Uses temporary connections per operation, not persistent connections ## Solution Applied: - **Replaced** `conn = db_manager.get_connection()` with proper `execute_query()` API - **Updated queries** to use named columns: `SELECT COUNT(*) as count FROM table` - **Added resilience** for optional tables (schema_files) with try/catch - **Result**: System health now reports ✅ **100% Healthy** ## Changes Made: ```python # Before (broken): conn = db_manager.get_connection() cursor.execute("SELECT COUNT(*) FROM markdown_files") total_files = cursor.fetchone()[0] # After (correct): result = db_manager.execute_query("SELECT COUNT(*) as count FROM markdown_files") total_files = result[0]['count'] if result else 0 ``` ## Current System Health: ``` 🏥 System Health: ✅ Healthy (100.0%) Healthy Subsystems: 3/3 🗄️ Database: ✅ Available (56.0 KB) - 11 files processed 🗃️ Cache: ✅ Available (0 B) 🖥️ AST Service: ✅ Available ``` This fix demonstrates the value of the health monitoring system - it successfully identified a real integration issue and provided clear diagnostic information. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -288,25 +288,26 @@ def _show_core_system_stats(config, format):
|
||||
db_size = 0
|
||||
db_size_human = '0 B'
|
||||
|
||||
# Get file counts from database
|
||||
# Get file counts from database using proper API
|
||||
try:
|
||||
conn = db_manager.get_connection()
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Total files
|
||||
cursor.execute("SELECT COUNT(*) FROM markdown_files")
|
||||
total_files = cursor.fetchone()[0]
|
||||
# Use execute_query method for database queries
|
||||
total_files_result = db_manager.execute_query("SELECT COUNT(*) as count FROM markdown_files")
|
||||
total_files = total_files_result[0]['count'] if total_files_result else 0
|
||||
|
||||
# Recent files (last 7 days)
|
||||
cursor.execute("""
|
||||
SELECT COUNT(*) FROM markdown_files
|
||||
recent_files_result = db_manager.execute_query("""
|
||||
SELECT COUNT(*) as count FROM markdown_files
|
||||
WHERE created_at >= datetime('now', '-7 days')
|
||||
""")
|
||||
recent_files = cursor.fetchone()[0]
|
||||
recent_files = recent_files_result[0]['count'] if recent_files_result else 0
|
||||
|
||||
# Schema count
|
||||
cursor.execute("SELECT COUNT(*) FROM schema_files")
|
||||
schema_count = cursor.fetchone()[0]
|
||||
# Schema count (table might not exist)
|
||||
try:
|
||||
schema_count_result = db_manager.execute_query("SELECT COUNT(*) as count FROM schema_files")
|
||||
schema_count = schema_count_result[0]['count'] if schema_count_result else 0
|
||||
except Exception:
|
||||
# schema_files table doesn't exist - this is okay
|
||||
schema_count = 0
|
||||
|
||||
stats['database'] = {
|
||||
'path': db_path,
|
||||
|
||||
Reference in New Issue
Block a user