forked from andika/membership-be
70 lines
3.1 KiB
Python
70 lines
3.1 KiB
Python
"""
|
|
Migration script to add multi-step registration fields to users table.
|
|
Run this once to update the database schema.
|
|
"""
|
|
|
|
from database import engine
|
|
from sqlalchemy import text
|
|
|
|
def add_multistep_registration_columns():
|
|
"""Add newsletter, volunteer, scholarship, and directory columns to users table"""
|
|
|
|
migrations = [
|
|
# Newsletter preferences
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS newsletter_publish_name BOOLEAN NOT NULL DEFAULT FALSE",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS newsletter_publish_photo BOOLEAN NOT NULL DEFAULT FALSE",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS newsletter_publish_birthday BOOLEAN NOT NULL DEFAULT FALSE",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS newsletter_publish_none BOOLEAN NOT NULL DEFAULT FALSE",
|
|
|
|
# Volunteer interests
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS volunteer_interests JSON DEFAULT '[]'::json",
|
|
|
|
# Scholarship
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS scholarship_requested BOOLEAN NOT NULL DEFAULT FALSE",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS scholarship_reason TEXT",
|
|
|
|
# Directory settings
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS show_in_directory BOOLEAN NOT NULL DEFAULT FALSE",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS directory_email VARCHAR",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS directory_bio TEXT",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS directory_address VARCHAR",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS directory_phone VARCHAR",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS directory_dob TIMESTAMP",
|
|
"ALTER TABLE users ADD COLUMN IF NOT EXISTS directory_partner_name VARCHAR"
|
|
]
|
|
|
|
try:
|
|
print("Adding multi-step registration columns to users table...")
|
|
with engine.connect() as conn:
|
|
for sql in migrations:
|
|
print(f" Executing: {sql[:70]}...")
|
|
conn.execute(text(sql))
|
|
conn.commit()
|
|
print("✅ Migration completed successfully!")
|
|
print("\nAdded columns:")
|
|
print(" Newsletter Preferences:")
|
|
print(" - newsletter_publish_name (BOOLEAN)")
|
|
print(" - newsletter_publish_photo (BOOLEAN)")
|
|
print(" - newsletter_publish_birthday (BOOLEAN)")
|
|
print(" - newsletter_publish_none (BOOLEAN)")
|
|
print(" Volunteer:")
|
|
print(" - volunteer_interests (JSON)")
|
|
print(" Scholarship:")
|
|
print(" - scholarship_requested (BOOLEAN)")
|
|
print(" - scholarship_reason (TEXT)")
|
|
print(" Directory:")
|
|
print(" - show_in_directory (BOOLEAN)")
|
|
print(" - directory_email (VARCHAR)")
|
|
print(" - directory_bio (TEXT)")
|
|
print(" - directory_address (VARCHAR)")
|
|
print(" - directory_phone (VARCHAR)")
|
|
print(" - directory_dob (TIMESTAMP)")
|
|
print(" - directory_partner_name (VARCHAR)")
|
|
|
|
except Exception as e:
|
|
print(f"❌ Migration failed: {e}")
|
|
raise
|
|
|
|
if __name__ == "__main__":
|
|
add_multistep_registration_columns()
|