"""empty message

Revision ID: 0014_add_template_version
Revises: 0013_add_loadtest_client
Create Date: 2016-05-11 16:00:51.478012

"""

# revision identifiers, used by Alembic.
revision = "0014_add_template_version"
down_revision = "0013_add_loadtest_client"

import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql


def upgrade():
    op.add_column("jobs", sa.Column("template_version", sa.Integer(), nullable=True))
    op.get_bind()
    op.execute("update jobs set template_version = (select version from templates where id = template_id)")
    op.add_column("notifications", sa.Column("template_version", sa.Integer(), nullable=True))
    op.execute("update notifications set template_version = (select version from templates where id = template_id)")
    op.alter_column("jobs", "template_version", nullable=False)
    op.alter_column("notifications", "template_version", nullable=False)

    # fix template_history where created_by_id is not set.
    query = (
        "update templates_history set created_by_id = "
        "         (select created_by_id from templates "
        "           where templates.id = templates_history.id "
        "           and templates.version = templates_history.version) "
        "where templates_history.created_by_id is null"
    )
    op.execute(query)


def downgrade():
    op.drop_column("notifications", "template_version")
    op.drop_column("jobs", "template_version")
