Initial commit
This commit is contained in:
commit
983cee0320
322 changed files with 57174 additions and 0 deletions
95
migrations/add_recurring_income.py
Normal file
95
migrations/add_recurring_income.py
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Migration script to add recurring income fields to Income table
|
||||
Adds: next_due_date, last_created_date, is_active, auto_create
|
||||
Idempotent: Can be run multiple times safely
|
||||
"""
|
||||
import sqlite3
|
||||
from datetime import datetime
|
||||
|
||||
def migrate():
|
||||
"""Add recurring fields to income table"""
|
||||
# Try both possible database locations
|
||||
db_paths = ['data/fina.db', 'instance/fina.db']
|
||||
conn = None
|
||||
|
||||
for db_path in db_paths:
|
||||
try:
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
# Test if we can access the database
|
||||
cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
|
||||
tables = [row[0] for row in cursor.fetchall()]
|
||||
if 'income' in tables:
|
||||
print(f"Using database at: {db_path}")
|
||||
break
|
||||
else:
|
||||
conn.close()
|
||||
conn = None
|
||||
except:
|
||||
if conn:
|
||||
conn.close()
|
||||
conn = None
|
||||
continue
|
||||
|
||||
if not conn:
|
||||
print("Error: Could not find fina.db with income table")
|
||||
return
|
||||
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Check what columns exist
|
||||
cursor.execute("PRAGMA table_info(income)")
|
||||
existing_columns = [row[1] for row in cursor.fetchall()]
|
||||
print(f"Existing columns in income table: {existing_columns}")
|
||||
|
||||
# Add next_due_date column if it doesn't exist
|
||||
if 'next_due_date' not in existing_columns:
|
||||
print("Adding next_due_date column...")
|
||||
cursor.execute('''
|
||||
ALTER TABLE income ADD COLUMN next_due_date DATETIME
|
||||
''')
|
||||
print("✓ Added next_due_date column")
|
||||
else:
|
||||
print("✓ next_due_date column already exists")
|
||||
|
||||
# Add last_created_date column if it doesn't exist
|
||||
if 'last_created_date' not in existing_columns:
|
||||
print("Adding last_created_date column...")
|
||||
cursor.execute('''
|
||||
ALTER TABLE income ADD COLUMN last_created_date DATETIME
|
||||
''')
|
||||
print("✓ Added last_created_date column")
|
||||
else:
|
||||
print("✓ last_created_date column already exists")
|
||||
|
||||
# Add is_active column if it doesn't exist
|
||||
if 'is_active' not in existing_columns:
|
||||
print("Adding is_active column...")
|
||||
cursor.execute('''
|
||||
ALTER TABLE income ADD COLUMN is_active BOOLEAN DEFAULT 1
|
||||
''')
|
||||
print("✓ Added is_active column")
|
||||
else:
|
||||
print("✓ is_active column already exists")
|
||||
|
||||
# Add auto_create column if it doesn't exist
|
||||
if 'auto_create' not in existing_columns:
|
||||
print("Adding auto_create column...")
|
||||
cursor.execute('''
|
||||
ALTER TABLE income ADD COLUMN auto_create BOOLEAN DEFAULT 0
|
||||
''')
|
||||
print("✓ Added auto_create column")
|
||||
else:
|
||||
print("✓ auto_create column already exists")
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
print("\n✓ Migration completed successfully!")
|
||||
print("Recurring income fields added to Income table")
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("Starting migration: add_recurring_income.py")
|
||||
print("=" * 60)
|
||||
migrate()
|
||||
Loading…
Add table
Add a link
Reference in a new issue