Files
notifications-api/migrations/versions/0140_sms_prefix_non_nullable.py
Chris Hill-Scott e8a94422e5 Make SMS prefix setting non-nullable
We have now:
- defaulted new services to start with this column set to `true`
- migrated all preexisting services[1] to have either `true` or `false` set
  for this column

There is no way for a service to switch back from `true`/`false` to
`null`.

This means that we can safely enforce a non-nullable constraint on this
column now.

1. There is a little gotcha: the GOV.UK Notify service still relies on
   the `sms_sender` column. It doesn’t have a row in the
   `service_sms_senders` table. This means the previous migration
   never changed this service’s value for `prefix_sms` from `null`. So
   this commit also changes its value to `False`, so that the rest of
   the migration, of the whole column, is possible.
2017-11-16 14:29:32 +00:00

47 lines
952 B
Python

"""
Revision ID: 0140_sms_prefix_non_nullable
Revises: 0139_migrate_sms_allowance_data
Create Date: 2017-11-07 13:04:04.077142
"""
from alembic import op
from flask import current_app
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
revision = '0140_sms_prefix_non_nullable'
down_revision = '0139_migrate_sms_allowance_data'
def upgrade():
op.execute("""
update services
set prefix_sms = false
where id = '{}'
""".format(current_app.config['NOTIFY_SERVICE_ID']))
op.alter_column(
'services',
'prefix_sms',
existing_type=sa.BOOLEAN(),
nullable=False,
)
def downgrade():
op.alter_column(
'services',
'prefix_sms',
existing_type=sa.BOOLEAN(),
nullable=True,
)
op.execute("""
update services
set prefix_sms = null
where id = '{}'
""".format(current_app.config['NOTIFY_SERVICE_ID']))