Files
notifications-api/migrations/versions/0021_add_delivered_failed_counts.py

49 lines
2.0 KiB
Python
Raw Normal View History

"""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 ###