Skip to content

Commit aae5d26

Browse files
authored
Merge pull request #4651 from alphagov/ris-update-billing-from-bulk-session
`create_or_update_ft_billing_for_day`: use bulk session to fetch billing data
2 parents 0690c99 + 3ec6534 commit aae5d26

3 files changed

Lines changed: 211 additions & 44 deletions

File tree

app/celery/reporting_tasks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from flask import current_app
44
from notifications_utils.timezones import convert_utc_to_bst
55

6-
from app import notify_celery, redis_store
6+
from app import db, notify_celery, redis_store
77
from app.config import QueueNames
88
from app.constants import EMAIL_TYPE, LETTER_TYPE, SMS_TYPE, CacheKeys
99
from app.cronitor import cronitor
@@ -74,7 +74,7 @@ def create_or_update_ft_billing_for_day(process_day: str):
7474
)
7575

7676
start = datetime.utcnow()
77-
billing_data = fetch_billing_data_for_day(process_day=process_date)
77+
billing_data = fetch_billing_data_for_day(process_day=process_date, session=db.session_bulk)
7878
end = datetime.utcnow()
7979

8080
base_params = {

app/dao/fact_billing_dao.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ def delete_billing_data_for_day(process_day: date, service_ids=None):
499499
return FactBilling.query.filter(*filters).delete()
500500

501501

502-
def fetch_billing_data_for_day(process_day: date, service_ids=None, check_permissions=False):
502+
def fetch_billing_data_for_day(process_day: date, service_ids=None, check_permissions=False, session=db.session):
503503
start_date = get_london_midnight_in_utc(process_day)
504504
end_date = get_london_midnight_in_utc(process_day + timedelta(days=1))
505505
extra = {"start_time": start_date, "end_time": end_date}
@@ -513,16 +513,17 @@ def fetch_billing_data_for_day(process_day: date, service_ids=None, check_permis
513513
end_date=end_date,
514514
service_ids=service_ids,
515515
check_permissions=check_permissions,
516+
session=session,
516517
)
517518
billing_data += partial_billing_data
518519

519520
return billing_data
520521

521522

522-
def _query_for_billing_data(notification_type, start_date, end_date, service_ids, check_permissions):
523-
base_query = db.session.query(NotificationAllTimeView).join(
524-
Service, NotificationAllTimeView.service_id == Service.id
525-
)
523+
def _query_for_billing_data(
524+
notification_type, start_date, end_date, service_ids, check_permissions, session=db.session
525+
):
526+
base_query = session.query(NotificationAllTimeView).join(Service, NotificationAllTimeView.service_id == Service.id)
526527

527528
if check_permissions:
528529
base_query = base_query.join(

0 commit comments

Comments
 (0)