Files
notifications-api/migrations/versions/0081_noti_status_as_enum.py

64 lines
1.9 KiB
Python

"""empty message
Revision ID: 0081_noti_status_as_enum
Revises: 0080_fix_rate_start_date
Create Date: 2017-05-02 14:50:04.070874
"""
# revision identifiers, used by Alembic.
revision = '0081_noti_status_as_enum'
down_revision = '0080_fix_rate_start_date'
from alembic import op
import sqlalchemy as sa
def upgrade():
status_table = op.create_table('notification_status_types',
sa.Column('name', sa.String(), nullable=False),
sa.PrimaryKeyConstraint('name')
)
op.bulk_insert(status_table,
[
{'name': x} for x in {
'created',
'sending',
'delivered',
'pending',
'failed',
'technical-failure',
'temporary-failure',
'permanent-failure',
'sent',
}
]
)
op.execute('ALTER TABLE notifications ADD COLUMN notification_status text')
op.execute('ALTER TABLE notification_history ADD COLUMN notification_status text')
op.create_index(op.f('ix_notifications_notification_status'), 'notifications', ['notification_status'])
op.create_index(op.f('ix_notification_history_notification_status'), 'notification_history', ['notification_status'])
op.create_foreign_key(
'fk_notifications_notification_status',
'notifications',
'notification_status_types',
['notification_status'],
['name'],
)
op.create_foreign_key(
'fk_notification_history_notification_status',
'notification_history',
'notification_status_types',
['notification_status'],
['name'],
)
def downgrade():
op.execute('ALTER TABLE notifications DROP COLUMN notification_status')
op.execute('ALTER TABLE notification_history DROP COLUMN notification_status')
op.execute('DROP TABLE notification_status_types')