fossasia/open-event-orga-server

View on GitHub
migrations/versions/6bd24e8f99f0_.py

Summary

Maintainability
D
2 days
Test Coverage
"""empty message

Revision ID: 6bd24e8f99f0
Revises: 76c949b1235f
Create Date: 2017-06-21 20:05:08.127436

"""

# revision identifiers, used by Alembic.
revision = '6bd24e8f99f0'
down_revision = '76c949b1235f'

from alembic import op
import sqlalchemy as sa
import sqlalchemy_utils


def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.create_table('event_types',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('name', sa.String(), nullable=False),
    sa.Column('slug', sa.String(), nullable=False),
    sa.PrimaryKeyConstraint('id'),
    sa.UniqueConstraint('id'),
    sa.UniqueConstraint('slug')
    )
    op.alter_column('events', 'type', new_column_name='event_type_id')
    op.alter_column('events_version', 'type', new_column_name='event_type_id')
    op.execute('INSERT INTO event_types(name, slug) SELECT DISTINCT event_type_id, lower(replace(regexp_replace(event_type_id, \'& |,\', \'\', \'g\'), \' \', \'-\'))\
                FROM events where not exists (SELECT 1 FROM event_types where event_types.name=events.event_type_id) and event_type_id is not null;')
    op.execute('UPDATE events SET event_type_id = (SELECT id FROM event_types WHERE event_types.name=events.event_type_id)')
    op.execute('ALTER TABLE events ALTER COLUMN event_type_id TYPE integer USING event_type_id::integer')
    op.create_foreign_key(None, 'events', 'event_types', ['event_type_id'], ['id'], ondelete='CASCADE')
    op.execute('UPDATE events_version SET event_type_id = (SELECT id FROM event_types WHERE event_types.name=events_version.event_type_id)')
    op.execute('ALTER TABLE events_version ALTER COLUMN event_type_id TYPE integer USING event_type_id::integer')
    ### end Alembic commands ###


def downgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.drop_constraint('events_event_type_id_fkey', 'events', type_='foreignkey')
    op.execute('ALTER TABLE events ALTER COLUMN event_type_id TYPE varchar USING event_type_id::varchar')
    op.execute('UPDATE events SET event_type_id = (SELECT name FROM event_types WHERE event_types.id=cast(events.event_type_id as int))')
    op.execute('ALTER TABLE events_version ALTER COLUMN event_type_id TYPE varchar USING event_type_id::varchar')
    op.execute('UPDATE events_version SET event_type_id = (SELECT name FROM event_types WHERE event_types.id=cast(events_version.event_type_id as int))')
    op.alter_column('events', 'event_type_id', new_column_name='type')
    op.alter_column('events_version', 'event_type_id', new_column_name='type')
    op.drop_table('event_types')
    ### end Alembic commands ###