Phase 3.1: Add completion logs database migration
This commit is contained in:
79
backend/migrations/005_add_completion_logs.py
Normal file
79
backend/migrations/005_add_completion_logs.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
"""Add chore_completion_logs table for comprehensive chore tracking."""
|
||||||
|
import sqlite3
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Add parent directory to path to import from app
|
||||||
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
"""Create chore_completion_logs table."""
|
||||||
|
db_path = Path(__file__).parent.parent / "data" / "family_hub.db"
|
||||||
|
|
||||||
|
print(f"Connecting to database: {db_path}")
|
||||||
|
conn = sqlite3.connect(db_path)
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Check if table already exists
|
||||||
|
cursor.execute("""
|
||||||
|
SELECT name FROM sqlite_master
|
||||||
|
WHERE type='table' AND name='chore_completion_logs'
|
||||||
|
""")
|
||||||
|
|
||||||
|
if cursor.fetchone():
|
||||||
|
print("⚠️ Table chore_completion_logs already exists, skipping...")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Create chore_completion_logs table
|
||||||
|
print("Creating chore_completion_logs table...")
|
||||||
|
cursor.execute("""
|
||||||
|
CREATE TABLE chore_completion_logs (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
chore_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
completed_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
notes TEXT,
|
||||||
|
verified_by_user_id INTEGER,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
FOREIGN KEY (chore_id) REFERENCES chores(id) ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (verified_by_user_id) REFERENCES users(id) ON DELETE SET NULL
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
|
||||||
|
# Create indexes for better query performance
|
||||||
|
print("Creating indexes...")
|
||||||
|
cursor.execute("""
|
||||||
|
CREATE INDEX idx_completion_logs_chore_id
|
||||||
|
ON chore_completion_logs(chore_id)
|
||||||
|
""")
|
||||||
|
|
||||||
|
cursor.execute("""
|
||||||
|
CREATE INDEX idx_completion_logs_user_id
|
||||||
|
ON chore_completion_logs(user_id)
|
||||||
|
""")
|
||||||
|
|
||||||
|
cursor.execute("""
|
||||||
|
CREATE INDEX idx_completion_logs_completed_at
|
||||||
|
ON chore_completion_logs(completed_at)
|
||||||
|
""")
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
print("✅ Successfully created chore_completion_logs table")
|
||||||
|
print(" Features:")
|
||||||
|
print(" - Tracks every chore completion instance")
|
||||||
|
print(" - Optional notes for each completion")
|
||||||
|
print(" - Optional verification by another user")
|
||||||
|
print(" - Full historical data for reporting")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"❌ Error during migration: {e}")
|
||||||
|
conn.rollback()
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
upgrade()
|
||||||
|
print("\n✅ Migration completed!")
|
||||||
Reference in New Issue
Block a user