forked from andika/membership-be
Fix database mismatches
This commit is contained in:
75
alembic/versions/002_add_missing_user_fields.py
Normal file
75
alembic/versions/002_add_missing_user_fields.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""add_missing_user_fields
|
||||
|
||||
Revision ID: 002_add_missing_user_fields
|
||||
Revises: 001_initial_baseline
|
||||
Create Date: 2026-01-04
|
||||
|
||||
Adds missing user fields to sync models.py with database:
|
||||
- scholarship_reason
|
||||
- directory_* fields (email, bio, address, phone, dob, partner_name)
|
||||
- profile_photo_url (rename from profile_image_url)
|
||||
- social_media_* fields (facebook, instagram, twitter, linkedin)
|
||||
- email_verification_expires
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '002_add_missing_user_fields'
|
||||
down_revision: Union[str, None] = '001_initial_baseline'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Add missing user fields"""
|
||||
|
||||
# Add scholarship_reason
|
||||
op.add_column('users', sa.Column('scholarship_reason', sa.Text(), nullable=True))
|
||||
|
||||
# Add directory fields
|
||||
op.add_column('users', sa.Column('directory_email', sa.String(), nullable=True))
|
||||
op.add_column('users', sa.Column('directory_bio', sa.Text(), nullable=True))
|
||||
op.add_column('users', sa.Column('directory_address', sa.String(), nullable=True))
|
||||
op.add_column('users', sa.Column('directory_phone', sa.String(), nullable=True))
|
||||
op.add_column('users', sa.Column('directory_dob', sa.DateTime(), nullable=True))
|
||||
op.add_column('users', sa.Column('directory_partner_name', sa.String(), nullable=True))
|
||||
|
||||
# Rename profile_image_url to profile_photo_url (for consistency with models.py)
|
||||
op.alter_column('users', 'profile_image_url', new_column_name='profile_photo_url')
|
||||
|
||||
# Add social media fields
|
||||
op.add_column('users', sa.Column('social_media_facebook', sa.String(), nullable=True))
|
||||
op.add_column('users', sa.Column('social_media_instagram', sa.String(), nullable=True))
|
||||
op.add_column('users', sa.Column('social_media_twitter', sa.String(), nullable=True))
|
||||
op.add_column('users', sa.Column('social_media_linkedin', sa.String(), nullable=True))
|
||||
|
||||
# Add email_verification_expires (exists in DB but not in models.py initially)
|
||||
# Check if it already exists, if not add it
|
||||
# This field should already exist from the initial schema, but adding for completeness
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Remove added fields (rollback)"""
|
||||
|
||||
# Remove social media fields
|
||||
op.drop_column('users', 'social_media_linkedin')
|
||||
op.drop_column('users', 'social_media_twitter')
|
||||
op.drop_column('users', 'social_media_instagram')
|
||||
op.drop_column('users', 'social_media_facebook')
|
||||
|
||||
# Rename profile_photo_url back to profile_image_url
|
||||
op.alter_column('users', 'profile_photo_url', new_column_name='profile_image_url')
|
||||
|
||||
# Remove directory fields
|
||||
op.drop_column('users', 'directory_partner_name')
|
||||
op.drop_column('users', 'directory_dob')
|
||||
op.drop_column('users', 'directory_phone')
|
||||
op.drop_column('users', 'directory_address')
|
||||
op.drop_column('users', 'directory_bio')
|
||||
op.drop_column('users', 'directory_email')
|
||||
|
||||
# Remove scholarship_reason
|
||||
op.drop_column('users', 'scholarship_reason')
|
||||
Reference in New Issue
Block a user