"""Backfill the namespace_user fields.

Revision ID: 3f4fe1194671
Revises: 6f2ecf5afcf
Create Date: 2014-09-24 14:29:45.192179

"""

# revision identifiers, used by Alembic.
revision = '3f4fe1194671'
down_revision = '6f2ecf5afcf'

from alembic import op
import sqlalchemy as sa


def upgrade(tables):
    conn = op.get_bind()
    user_table_name_escaped = conn.dialect.identifier_preparer.format_table(tables['user'])
    conn.execute('update repository set namespace_user_id = (select id from {0} where {0}.username = repository.namespace) where namespace_user_id is NULL'.format(user_table_name_escaped))
    op.create_index('repository_namespace_user_id_name', 'repository', ['namespace_user_id', 'name'], unique=True)


def downgrade(tables):
    op.drop_constraint('fk_repository_namespace_user_id_user', table_name='repository', type_='foreignkey')
    op.drop_index('repository_namespace_user_id_name', table_name='repository')
