initial comment

This commit is contained in:
2026-01-24 17:43:28 -05:00
commit fe40adfd38
72 changed files with 19614 additions and 0 deletions

59
DATABASE-INIT-FIX.md Normal file
View File

@@ -0,0 +1,59 @@
# Database Initialization Fix
## Issue
Dashboard was showing errors:
```
sqlite3.OperationalError: no such table: files
```
## Root Cause
The `DatabaseReader._ensure_database()` method only initialized the database if the file didn't exist:
```python
if not self.db_path.exists():
self._initialize_database()
```
This caused problems when:
- Database file exists but is empty
- Database file exists but schema is outdated
- Database was created but initialization failed partway through
## Fix
Changed to always run initialization (dashboard.py:129-133):
```python
def _ensure_database(self):
"""Ensure database exists and has correct schema"""
# Always run initialization - it's safe with CREATE TABLE IF NOT EXISTS
# This ensures migrations run even if the file exists but schema is outdated
self._initialize_database()
```
## Why This Is Safe
1. **CREATE TABLE IF NOT EXISTS** - Won't recreate existing tables
2. **Migration checks** - Only adds columns that don't exist
3. **Idempotent** - Can run multiple times safely
4. **Auto-repair** - Fixes incomplete or corrupted schemas
## Benefits
✅ Database always has correct schema
✅ Migrations run automatically on startup
✅ Handles edge cases (empty files, partial schemas)
✅ No manual intervention needed
✅ Works for fresh installs and upgrades
## Similar Fix Applied
The same initialization logic exists in `reencode.py`'s `StateDatabase` class, which already runs migrations every time. This change brings `dashboard.py` in line with that behavior.
## Testing
After this fix:
1. Dashboard starts successfully
2. Database is created if missing
3. Tables are created if missing
4. New columns are added via migration
5. All API endpoints work properly