migrations/versions/6bd24e8f99f0_.py
"""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 ###