fina/migrations/add_category_budgets.py

55 lines
1.8 KiB
Python
Raw Normal View History

2025-12-26 00:52:56 +00:00
"""
Migration: Add budget tracking fields to categories
"""
import sqlite3
import os
def migrate():
"""Add budget fields to categories table"""
db_path = os.path.join(os.path.dirname(__file__), '..', 'data', 'fina.db')
if not os.path.exists(db_path):
print(f"Database not found at {db_path}")
return
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
try:
# Add monthly_budget to categories
print("Adding monthly_budget column to categories table...")
cursor.execute("""
ALTER TABLE categories
ADD COLUMN monthly_budget REAL
""")
print("✓ Added monthly_budget to categories")
except sqlite3.OperationalError as e:
if "duplicate column name" in str(e).lower():
print("✓ monthly_budget column already exists in categories")
else:
print(f"Error adding monthly_budget to categories: {e}")
try:
# Add budget_alert_threshold to categories
print("Adding budget_alert_threshold column to categories table...")
cursor.execute("""
ALTER TABLE categories
ADD COLUMN budget_alert_threshold REAL DEFAULT 0.9
""")
print("✓ Added budget_alert_threshold to categories")
except sqlite3.OperationalError as e:
if "duplicate column name" in str(e).lower():
print("✓ budget_alert_threshold column already exists in categories")
else:
print(f"Error adding budget_alert_threshold to categories: {e}")
conn.commit()
conn.close()
print("\n✓ Budget tracking migration completed successfully!")
print("Categories can now have monthly budgets with customizable alert thresholds.")
if __name__ == '__main__':
migrate()