"""Initial fresh migration

Revision ID: f7e8324e7ea4
Revises: 
Create Date: 2026-08-27 22:11:33.567884

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'f7e8324e7ea4'
down_revision = None
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('collaboration_requests',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('name', sa.String(length=150), nullable=False),
    sa.Column('email', sa.String(length=150), nullable=False),
    sa.Column('phone', sa.String(length=50), nullable=True),
    sa.Column('organisation', sa.String(length=150), nullable=True),
    sa.Column('role', sa.String(length=100), nullable=True),
    sa.Column('collaboration_type', sa.String(length=100), nullable=False),
    sa.Column('website', sa.String(length=255), nullable=True),
    sa.Column('contribution', sa.Text(), nullable=False),
    sa.Column('support_requested', sa.Text(), nullable=False),
    sa.Column('message', sa.Text(), nullable=True),
    sa.Column('agreement', sa.Boolean(), nullable=False),
    sa.Column('ip_address', sa.String(length=45), nullable=True),
    sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
    sa.PrimaryKeyConstraint('id')
    )
    with op.batch_alter_table('collaboration_requests', schema=None) as batch_op:
        batch_op.create_index(batch_op.f('ix_collaboration_requests_email'), ['email'], unique=False)
        batch_op.create_index(batch_op.f('ix_collaboration_requests_ip_address'), ['ip_address'], unique=False)

    op.create_table('contact_messages',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('name', sa.String(length=120), nullable=False),
    sa.Column('email', sa.String(length=150), nullable=False),
    sa.Column('phone', sa.String(length=30), nullable=True),
    sa.Column('subject', sa.String(length=100), nullable=False),
    sa.Column('message', sa.Text(), nullable=False),
    sa.Column('privacy_consent', sa.Boolean(), nullable=False),
    sa.Column('ip_address', sa.String(length=45), nullable=True),
    sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
    sa.PrimaryKeyConstraint('id')
    )
    with op.batch_alter_table('contact_messages', schema=None) as batch_op:
        batch_op.create_index(batch_op.f('ix_contact_messages_email'), ['email'], unique=False)
        batch_op.create_index(batch_op.f('ix_contact_messages_ip_address'), ['ip_address'], unique=False)

    op.create_table('predev_submissions',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('name', sa.String(length=120), nullable=False),
    sa.Column('email', sa.String(length=150), nullable=False),
    sa.Column('whatsapp', sa.String(length=30), nullable=False),
    sa.Column('location', sa.String(length=100), nullable=False),
    sa.Column('current_status', sa.String(length=50), nullable=False),
    sa.Column('primary_skill', sa.String(length=100), nullable=False),
    sa.Column('experience_level', sa.String(length=50), nullable=False),
    sa.Column('preferred_start_period', sa.String(length=50), nullable=False),
    sa.Column('development_goal', sa.Text(), nullable=False),
    sa.Column('program_understanding', sa.Boolean(), nullable=False),
    sa.Column('ip_address', sa.String(length=45), nullable=True),
    sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
    sa.PrimaryKeyConstraint('id')
    )
    with op.batch_alter_table('predev_submissions', schema=None) as batch_op:
        batch_op.create_index(batch_op.f('ix_predev_submissions_email'), ['email'], unique=False)
        batch_op.create_index(batch_op.f('ix_predev_submissions_ip_address'), ['ip_address'], unique=False)

    op.create_table('project_enquiries',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('service', sa.String(length=100), nullable=False),
    sa.Column('project_title', sa.String(length=150), nullable=False),
    sa.Column('description', sa.Text(), nullable=False),
    sa.Column('name', sa.String(length=100), nullable=False),
    sa.Column('email', sa.String(length=120), nullable=False),
    sa.Column('phone', sa.String(length=50), nullable=True),
    sa.Column('timeline', sa.String(length=50), nullable=True),
    sa.Column('ip_address', sa.String(length=45), nullable=True),
    sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
    sa.PrimaryKeyConstraint('id')
    )
    with op.batch_alter_table('project_enquiries', schema=None) as batch_op:
        batch_op.create_index(batch_op.f('ix_project_enquiries_created_at'), ['created_at'], unique=False)
        batch_op.create_index(batch_op.f('ix_project_enquiries_email'), ['email'], unique=False)
        batch_op.create_index(batch_op.f('ix_project_enquiries_ip_address'), ['ip_address'], unique=False)

    op.create_table('subscribers',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('email', sa.String(length=150), nullable=False),
    sa.Column('ip_address', sa.String(length=45), nullable=True),
    sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
    sa.PrimaryKeyConstraint('id')
    )
    with op.batch_alter_table('subscribers', schema=None) as batch_op:
        batch_op.create_index(batch_op.f('ix_subscribers_email'), ['email'], unique=False)
        batch_op.create_index(batch_op.f('ix_subscribers_ip_address'), ['ip_address'], unique=False)

    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    with op.batch_alter_table('subscribers', schema=None) as batch_op:
        batch_op.drop_index(batch_op.f('ix_subscribers_ip_address'))
        batch_op.drop_index(batch_op.f('ix_subscribers_email'))

    op.drop_table('subscribers')
    with op.batch_alter_table('project_enquiries', schema=None) as batch_op:
        batch_op.drop_index(batch_op.f('ix_project_enquiries_ip_address'))
        batch_op.drop_index(batch_op.f('ix_project_enquiries_email'))
        batch_op.drop_index(batch_op.f('ix_project_enquiries_created_at'))

    op.drop_table('project_enquiries')
    with op.batch_alter_table('predev_submissions', schema=None) as batch_op:
        batch_op.drop_index(batch_op.f('ix_predev_submissions_ip_address'))
        batch_op.drop_index(batch_op.f('ix_predev_submissions_email'))

    op.drop_table('predev_submissions')
    with op.batch_alter_table('contact_messages', schema=None) as batch_op:
        batch_op.drop_index(batch_op.f('ix_contact_messages_ip_address'))
        batch_op.drop_index(batch_op.f('ix_contact_messages_email'))

    op.drop_table('contact_messages')
    with op.batch_alter_table('collaboration_requests', schema=None) as batch_op:
        batch_op.drop_index(batch_op.f('ix_collaboration_requests_ip_address'))
        batch_op.drop_index(batch_op.f('ix_collaboration_requests_email'))

    op.drop_table('collaboration_requests')
    # ### end Alembic commands ###
