Add unique constraint to email branding domains

Does two things:

1. Revert "Revert "Add unique constraint to email branding domain""

This reverts commit af9cb30ef3.

2. Don’t allow empty string in email branding domain

Columns with multiple `null`s can have a uniqueness constraint. Columns
with multiple empty string values are not considered unique.

This commit:
- removes any duplicate empty string values
- casts empty strings to null string any time these columns are updated

---

Squashed into this single commits because these two things are not
atomic as individual commits.
This commit is contained in:
Chris Hill-Scott
2018-09-04 10:57:47 +01:00
parent 55b7b3b157
commit 5d5047fb13
4 changed files with 42 additions and 2 deletions

View File

@@ -0,0 +1,28 @@
"""
Revision ID: 0223_add_domain_constraint
Revises: 0222_drop_service_branding
Create Date: 2018-08-24 13:36:49.346156
"""
from alembic import op
revision = '0223_add_domain_constraint'
down_revision = '0222_drop_service_branding'
def upgrade():
op.execute("""
update
email_branding
set
domain = null
where
domain = ''
""")
op.create_unique_constraint('uq_email_branding_domain', 'email_branding', ['domain'])
def downgrade():
op.drop_constraint('uq_email_branding_domain', 'email_branding')