54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
"""
|
|
Migration: add budget alert columns.
|
|
|
|
Run once after deploying the budget alerts feature:
|
|
python scripts/add_budget_alert_columns.py
|
|
|
|
Adds to `budgets`:
|
|
alert_sent_80 BOOLEAN NOT NULL DEFAULT FALSE
|
|
alert_sent_100 BOOLEAN NOT NULL DEFAULT FALSE
|
|
|
|
Adds to `users`:
|
|
budget_alerts_enabled BOOLEAN NOT NULL DEFAULT FALSE
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from app import create_app
|
|
from app.extensions import db
|
|
|
|
app = create_app()
|
|
|
|
with app.app_context():
|
|
with db.engine.connect() as conn:
|
|
# budgets table
|
|
for col, default in [('alert_sent_80', '0'), ('alert_sent_100', '0')]:
|
|
try:
|
|
conn.execute(db.text(
|
|
f"ALTER TABLE budgets ADD COLUMN {col} TINYINT(1) NOT NULL DEFAULT {default}"
|
|
))
|
|
print(f"Added budgets.{col}")
|
|
except Exception as e:
|
|
if 'Duplicate column' in str(e) or '1060' in str(e):
|
|
print(f"budgets.{col} already exists — skipping")
|
|
else:
|
|
raise
|
|
|
|
# users table
|
|
try:
|
|
conn.execute(db.text(
|
|
"ALTER TABLE users ADD COLUMN budget_alerts_enabled TINYINT(1) NOT NULL DEFAULT 0"
|
|
))
|
|
print("Added users.budget_alerts_enabled")
|
|
except Exception as e:
|
|
if 'Duplicate column' in str(e) or '1060' in str(e):
|
|
print("users.budget_alerts_enabled already exists — skipping")
|
|
else:
|
|
raise
|
|
|
|
conn.commit()
|
|
|
|
print("Done.")
|