3da51a88205a_ckan_api_key_constraint.py 736 Bytes
"""ckan api key constraint

Revision ID: 3da51a88205a
Revises: 46c3f68e950a
Create Date: 2014-04-01 11:33:01.394220

"""

# revision identifiers, used by Alembic.
revision = '3da51a88205a'
down_revision = '46c3f68e950a'

from alembic import op
import sqlalchemy as sa


def upgrade():
    query = '''UPDATE "user"
                 SET ckan_api=null
                 WHERE id IN (SELECT id 
                    FROM (SELECT id, row_number() over (partition BY ckan_api ORDER BY id) AS rnum
                          FROM "user") t
               WHERE t.rnum > 1);
            '''
    op.execute(query)
    op.create_unique_constraint('ckan_api_uq', 'user', ['ckan_api'])


def downgrade():
    op.drop_constraint('ckan_api_uq', 'user')