Initial commit

This commit is contained in:
iulian 2025-12-26 00:52:56 +00:00
commit 983cee0320
322 changed files with 57174 additions and 0 deletions

View 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()