"""
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, 'logging.getLogger', 'logging.getLogger', False, 'import logging\n'), (21, 'sqlalchemy.MetaData', 'MetaData', False, 'from sqlalchemy import Column, ForeignKey, Integer, MetaData\n'), (34, 'galaxy.model.migrate.versions.util.add_column', 'add_column', False, 'from galaxy.model.migrate.versions.util import add_column, drop_column\n'), (41, 'galaxy.model.migrate.versions.util.drop_column', 'drop_column', False, 'from galaxy.model.migrate.versions.util import add_column, drop_column\n'), (33, 'sqlalchemy.Column', 'Column', False, 'from sqlalchemy import Column, ForeignKey, Integer, MetaData\n'), (31, 'sqlalchemy.ForeignKey', 'ForeignKey', False, 'from sqlalchemy import Column, ForeignKey, Integer, MetaData\n')]