mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-10 07:12:20 -05:00
This script has been applied to all environments except live, this can be pushed through to live without issue because of how alembic works.
49 lines
2.0 KiB
Python
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 ###
|