from trac.db import Table, Column, Index, DatabaseManager

def do_upgrade(env, cursor):

    """Add 'description' column to the iteration table.
    """
    cursor.execute("CREATE TEMPORARY TABLE iteration_old AS SELECT * FROM iteration")
    cursor.execute("DROP TABLE iteration")

    # Milestone with 'after'
    iteration_table = Table('iteration', key='id')[
        Column('id', auto_increment=True),
        Column('summary'),
        Column('description'),
        Column('start_date', type='int'),
        Column('end_date', type='int'),
        Column('tickets'),
        Index(['start_date']),
        Index(['end_date'])]

    db_connector, _ = DatabaseManager(env)._get_connector()
    for stmt in db_connector.to_sql(iteration_table):
        cursor.execute(stmt)

    cursor.execute("INSERT INTO iteration "
                   "(id,summary,start_date,end_date,tickets) "
                   "SELECT id,summary,start_date,end_date,tickets "
                   "FROM iteration_old")

    cursor.execute("UPDATE iteration SET description=''")

    cursor.execute("DROP TABLE iteration_old")

    # Set database schema version.
    cursor.execute("INSERT INTO system (name, value) VALUES"
      " ('agiletrac_version', '2')")

