"""
Migration script to add 'ldda_id' column to the implicitly_converted_dataset_association table.
"""
from __future__ import print_function

import logging

from sqlalchemy import (
    Column,
    ForeignKey,
    Integer,
    MetaData
)

from galaxy.model.migrate.versions.util import (
    add_column,
    drop_column
)

log = logging.getLogger(__name__)
metadata = MetaData()


def upgrade(migrate_engine):
    print(__doc__)
    metadata.bind = migrate_engine
    metadata.reflect()

    # SQLAlchemy Migrate has a bug when adding a column with both a ForeignKey and a index in SQLite
    if migrate_engine.name != 'sqlite':
        c = Column("ldda_id", Integer, ForeignKey("library_dataset_dataset_association.id"), index=True, nullable=True)
    else:
        c = Column("ldda_id", Integer, index=True, nullable=True)
    add_column(c, 'implicitly_converted_dataset_association', metadata, index_name='ix_implicitly_converted_ds_assoc_ldda_id')


def downgrade(migrate_engine):
    metadata.bind = migrate_engine
    metadata.reflect()

    drop_column('ldda_id', 'implicitly_converted_dataset_association', metadata)

[((20, 6, 20, 33), 'logging.getLogger', 'logging.getLogger', ({(20, 24, 20, 32): '__name__'}, {}), '(__name__)', False, 'import logging\n'), ((21, 11, 21, 21), 'sqlalchemy.MetaData', 'MetaData', ({}, {}), '()', False, 'from sqlalchemy import Column, ForeignKey, Integer, MetaData\n'), ((34, 4, 34, 126), 'galaxy.model.migrate.versions.util.add_column', 'add_column', (), '', False, 'from galaxy.model.migrate.versions.util import add_column, drop_column\n'), ((41, 4, 41, 80), 'galaxy.model.migrate.versions.util.drop_column', 'drop_column', ({(41, 16, 41, 25): '"""ldda_id"""', (41, 27, 41, 69): '"""implicitly_converted_dataset_association"""', (41, 71, 41, 79): 'metadata'}, {}), "('ldda_id', 'implicitly_converted_dataset_association', metadata)", False, 'from galaxy.model.migrate.versions.util import add_column, drop_column\n'), ((33, 12, 33, 65), 'sqlalchemy.Column', 'Column', (), '', False, 'from sqlalchemy import Column, ForeignKey, Integer, MetaData\n'), ((31, 39, 31, 91), 'sqlalchemy.ForeignKey', 'ForeignKey', ({(31, 50, 31, 90): '"""library_dataset_dataset_association.id"""'}, {}), "('library_dataset_dataset_association.id')", False, 'from sqlalchemy import Column, ForeignKey, Integer, MetaData\n')]