"""empty message

Revision ID: 0044_jobs_to_notification_hist
Revises: 0043_notification_indexes
Create Date: 2016-07-15 13:28:41.441009

"""

# revision identifiers, used by Alembic.
revision = '0044_jobs_to_notification_hist'
down_revision = '0043_notification_indexes'

from alembic import op

from sqlalchemy.orm.session import Session

import uuid
import datetime
from app.models import Job, Template, NotificationHistory


def upgrade():
    #
    # REMOVED
    # This script has been applied and doesn't need to be re-applied
    # note that by referencing the model objects in migration files, any subsequent alteration of the model and thus
    # the database causes all previous migration scripts to fail as the model and DB will be inconsistent in this
    # past state.
    #
    # session = Session(bind=op.get_bind())
    #
    # go_live = datetime.datetime.strptime('2016-05-18', '%Y-%m-%d')
    # notifications_history_start_date = datetime.datetime.strptime('2016-06-26 23:21:55', '%Y-%m-%d %H:%M:%S')
    # jobs = session.query(Job).join(Template).filter(Job.service_id == '95316ff0-e555-462d-a6e7-95d26fbfd091',
    #                                                 Job.created_at >= go_live,
    #                                                 Job.created_at < notifications_history_start_date).all()
    #
    # for job in jobs:
    #     for i in range(0, job.notifications_delivered):
    #         notification = NotificationHistory(id=uuid.uuid4(),
    #                                            job_id=job.id,
    #                                            service_id=job.service_id,
    #                                            template_id=job.template.id,
    #                                            template_version=job.template_version,
    #                                            key_type='normal',
    #                                            content_char_count=len(job.template.content),
    #                                            notification_type=job.template.template_type,
    #                                            created_at=job.created_at,
    #                                            sent_at=job.processing_finished,
    #                                            sent_by='ses' if job.template.template_type == 'email' else 'mmg',
    #                                            status='delivered')
    #
    #         session.add(notification)
    #
    #     for i in range(0, job.notifications_failed):
    #         notification = NotificationHistory(id=uuid.uuid4(),
    #                                            job_id=job.id,
    #                                            service_id=job.service_id,
    #                                            template_id=job.template.id,
    #                                            template_version=job.template_version,
    #                                            key_type='normal',
    #                                            content_char_count=len(job.template.content),
    #                                            notification_type=job.template.template_type,
    #                                            created_at=job.created_at,
    #                                            sent_at=job.processing_finished,
    #                                            sent_by='ses' if job.template.template_type == 'email' else 'mmg',
    #                                            status='permanent-failure')
    #         session.add(notification)
    #     session.commit()
    pass


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    # session = Session(bind=op.get_bind())
    #
    # go_live = datetime.datetime.strptime('2016-05-18', '%Y-%m-%d')
    # notifications_history_start_date = datetime.datetime.strptime('2016-06-26 23:21:55', '%Y-%m-%d %H:%M:%S')
    #
    # session.query(NotificationHistory).filter(
    #     NotificationHistory.created_at >= go_live,
    #     NotificationHistory.service_id == '95316ff0-e555-462d-a6e7-95d26fbfd091',
    #     NotificationHistory.created_at < notifications_history_start_date).delete()
    #
    # session.commit()
    # ### end Alembic commands ###
    pass
