diff --git a/app/celery/reporting_tasks.py b/app/celery/reporting_tasks.py index 0036a076f..9d404edaa 100644 --- a/app/celery/reporting_tasks.py +++ b/app/celery/reporting_tasks.py @@ -117,11 +117,11 @@ def create_nightly_notification_status_for_service_and_day(process_day, service_ process_day = datetime.strptime(process_day, "%Y-%m-%d").date() current_app.logger.info( f'create-nightly-notification-status-for-day task started ' - f'for {service_id}, {notification_type} and {process_day}' + f'for {service_id}, {notification_type} for {process_day}' ) start = datetime.utcnow() - transit_data = fetch_status_data_for_service_and_day( + new_status_rows = fetch_status_data_for_service_and_day( process_day=process_day, notification_type=notification_type, service_id=service_id, @@ -130,12 +130,12 @@ def create_nightly_notification_status_for_service_and_day(process_day, service_ end = datetime.utcnow() current_app.logger.info( f'create-nightly-notification-status-for-day task fetch ' - f'for {service_id}, {process_day} and {notification_type}: ' + f'for {service_id}, {notification_type} for {process_day}: ' f'data fetched in {(end - start).seconds} seconds' ) update_fact_notification_status( - transit_data=transit_data, + new_status_rows=new_status_rows, process_day=process_day, notification_type=notification_type, service_id=service_id @@ -143,6 +143,6 @@ def create_nightly_notification_status_for_service_and_day(process_day, service_ current_app.logger.info( f'create-nightly-notification-status-for-day task finished ' - f'for {service_id}, {process_day} and {notification_type}: ' - f'{len(transit_data)} rows updated' + f'for {service_id}, {notification_type} for {process_day}: ' + f'{len(new_status_rows)} rows updated' ) diff --git a/app/dao/fact_notification_status_dao.py b/app/dao/fact_notification_status_dao.py index 728dbe04c..9c4f10da7 100644 --- a/app/dao/fact_notification_status_dao.py +++ b/app/dao/fact_notification_status_dao.py @@ -45,7 +45,6 @@ def fetch_status_data_for_service_and_day(process_day, service_id, notification_ return db.session.query( table.template_id, - table.service_id, func.coalesce(table.job_id, '00000000-0000-0000-0000-000000000000').label('job_id'), table.key_type, table.status, @@ -58,7 +57,6 @@ def fetch_status_data_for_service_and_day(process_day, service_id, notification_ table.key_type.in_((KEY_TYPE_NORMAL, KEY_TYPE_TEAM)), ).group_by( table.template_id, - table.service_id, 'job_id', table.key_type, table.status @@ -66,7 +64,7 @@ def fetch_status_data_for_service_and_day(process_day, service_id, notification_ @autocommit -def update_fact_notification_status(transit_data, process_day, notification_type, service_id): +def update_fact_notification_status(new_status_rows, process_day, notification_type, service_id): table = FactNotificationStatus.__table__ FactNotificationStatus.query.filter( FactNotificationStatus.bst_date == process_day, @@ -74,18 +72,19 @@ def update_fact_notification_status(transit_data, process_day, notification_type FactNotificationStatus.service_id == service_id, ).delete() - for row in transit_data: - stmt = insert(table).values( - bst_date=process_day, - template_id=row.template_id, - service_id=service_id, - job_id=row.job_id, - notification_type=notification_type, - key_type=row.key_type, - notification_status=row.status, - notification_count=row.notification_count, + for row in new_status_rows: + db.session.connection().execute( + insert(table).values( + bst_date=process_day, + template_id=row.template_id, + service_id=service_id, + job_id=row.job_id, + notification_type=notification_type, + key_type=row.key_type, + notification_status=row.status, + notification_count=row.notification_count, + ) ) - db.session.connection().execute(stmt) def fetch_notification_status_for_service_by_month(start_date, end_date, service_id):