mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-16 02:02:13 -05:00
change migrate-data-to-ft-notification-status to use the existing task
saves the reimplementation of the big sql query
This commit is contained in:
@@ -21,6 +21,7 @@ from app.celery.tasks import record_daily_sorted_counts, get_template_class, pro
|
|||||||
from app.celery.nightly_tasks import send_total_sent_notifications_to_performance_platform
|
from app.celery.nightly_tasks import send_total_sent_notifications_to_performance_platform
|
||||||
from app.celery.service_callback_tasks import send_delivery_status_to_service
|
from app.celery.service_callback_tasks import send_delivery_status_to_service
|
||||||
from app.celery.letters_pdf_tasks import create_letters_pdf
|
from app.celery.letters_pdf_tasks import create_letters_pdf
|
||||||
|
from app.celery.reporting_tasks import create_nightly_notification_status_for_day
|
||||||
from app.config import QueueNames
|
from app.config import QueueNames
|
||||||
from app.dao.annual_billing_dao import dao_create_or_update_annual_billing_for_year
|
from app.dao.annual_billing_dao import dao_create_or_update_annual_billing_for_year
|
||||||
from app.dao.fact_billing_dao import (
|
from app.dao.fact_billing_dao import (
|
||||||
@@ -491,53 +492,15 @@ def rebuild_ft_billing_for_day(service_id, day):
|
|||||||
@click.option('-e', '--end_date', required=True, help="end date inclusive", type=click_dt(format='%Y-%m-%d'))
|
@click.option('-e', '--end_date', required=True, help="end date inclusive", type=click_dt(format='%Y-%m-%d'))
|
||||||
@statsd(namespace="tasks")
|
@statsd(namespace="tasks")
|
||||||
def migrate_data_to_ft_notification_status(start_date, end_date):
|
def migrate_data_to_ft_notification_status(start_date, end_date):
|
||||||
|
start_date = start_date.date()
|
||||||
print('Notification statuses migration from date {} to {}'.format(start_date, end_date))
|
for day_diff in range((end_date - start_date).days):
|
||||||
|
process_day = start_date + timedelta(days=day_diff)
|
||||||
process_date = start_date
|
print('create_nightly_notification_status_for_day triggered for {}'.format(process_day))
|
||||||
total_updated = 0
|
create_nightly_notification_status_for_day.apply_async(
|
||||||
|
kwargs={'process_day': process_day.strftime('%Y-%m-%d')},
|
||||||
while process_date < end_date:
|
queue=QueueNames.REPORTING
|
||||||
start_time = datetime.now()
|
|
||||||
# migrate data into ft_notification_status and update if record already exists
|
|
||||||
|
|
||||||
db.session.execute(
|
|
||||||
'delete from ft_notification_status where bst_date = :process_date',
|
|
||||||
{"process_date": process_date}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
sql = \
|
|
||||||
"""
|
|
||||||
insert into ft_notification_status (bst_date, template_id, service_id, job_id, notification_type, key_type,
|
|
||||||
notification_status, created_at, notification_count)
|
|
||||||
select
|
|
||||||
(n.created_at at time zone 'UTC' at time zone 'Europe/London')::timestamp::date as bst_date,
|
|
||||||
coalesce(n.template_id, '00000000-0000-0000-0000-000000000000') as template_id,
|
|
||||||
n.service_id,
|
|
||||||
coalesce(n.job_id, '00000000-0000-0000-0000-000000000000') as job_id,
|
|
||||||
n.notification_type,
|
|
||||||
n.key_type,
|
|
||||||
n.notification_status,
|
|
||||||
now() as created_at,
|
|
||||||
count(*) as notification_count
|
|
||||||
from notification_history n
|
|
||||||
where n.created_at >= (date :start + time '00:00:00') at time zone 'Europe/London' at time zone 'UTC'
|
|
||||||
and n.created_at < (date :end + time '00:00:00') at time zone 'Europe/London' at time zone 'UTC'
|
|
||||||
group by bst_date, template_id, service_id, job_id, notification_type, key_type, notification_status
|
|
||||||
order by bst_date
|
|
||||||
"""
|
|
||||||
result = db.session.execute(sql, {"start": process_date, "end": process_date + timedelta(days=1)})
|
|
||||||
db.session.commit()
|
|
||||||
print('ft_notification_status: --- Completed took {}ms. Migrated {} rows for {}.'.format(
|
|
||||||
datetime.now() - start_time,
|
|
||||||
result.rowcount,
|
|
||||||
process_date
|
|
||||||
))
|
|
||||||
process_date += timedelta(days=1)
|
|
||||||
|
|
||||||
total_updated += result.rowcount
|
|
||||||
print('Total inserted/updated records = {}'.format(total_updated))
|
|
||||||
|
|
||||||
|
|
||||||
@notify_command(name='bulk-invite-user-to-service')
|
@notify_command(name='bulk-invite-user-to-service')
|
||||||
@click.option('-f', '--file_name', required=True,
|
@click.option('-f', '--file_name', required=True,
|
||||||
|
|||||||
Reference in New Issue
Block a user