Files
notifications-api/migrations/versions/0021_add_delivered_failed_counts.py
Rebecca Law a0b974f4ac Remove the status from the group by clause of the update statement.
This script has been applied to all environments except live, this can be pushed through to live without issue because of how alembic works.
2016-05-25 09:13:32 +01:00

49 lines
2.0 KiB
Python

"""empty message
Revision ID: 0021_add_delivered_failed_counts
Revises: 0020_template_history_fix
Create Date: 2016-05-23 15:05:25.109346
"""
# revision identifiers, used by Alembic.
revision = '0021_add_delivered_failed_counts'
down_revision = '0020_template_history_fix'
from alembic import op
import sqlalchemy as sa
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.add_column('jobs', sa.Column('notifications_delivered', sa.Integer(), nullable=True))
op.add_column('jobs', sa.Column('notifications_failed', sa.Integer(), nullable=True))
conn = op.get_bind()
results = conn.execute("select distinct job_id from notifications")
res = results.fetchall()
for x in res:
if x.job_id:
op.execute("update jobs set notifications_delivered = ("
"select count(status) from notifications where status = 'delivered' and job_id = '{}' "
"group by job_id)"
"where jobs.id = '{}'".format(x.job_id, x.job_id))
op.execute("update jobs set notifications_failed = ("
"select count(status) from notifications "
"where status in ('failed','technical-failure', 'temporary-failure', 'permanent-failure') "
"and job_id = '{}' group by job_id)"
"where jobs.id = '{}'".format(x.job_id, x.job_id))
op.execute("update jobs set notifications_delivered = 0 where notifications_delivered is null")
op.execute("update jobs set notifications_failed = 0 where notifications_failed is null")
op.alter_column('jobs', 'notifications_delivered', nullable=False)
op.alter_column('jobs', 'notifications_failed', nullable=False)
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_column('jobs', 'notifications_failed')
op.drop_column('jobs', 'notifications_delivered')
### end Alembic commands ###