Merge pull request #1784 from alphagov/optimize-todays-services-query

Optimise query for platform-admin/live-services and trial-services
This commit is contained in:
Rebecca Law
2018-03-20 16:13:27 +00:00
committed by GitHub
2 changed files with 7 additions and 2 deletions

View File

@@ -333,6 +333,9 @@ def dao_fetch_monthly_historical_stats_for_service(service_id, year):
@statsd(namespace='dao')
def dao_fetch_todays_stats_for_all_services(include_from_test_key=True, only_active=True):
today = date.today()
start_date = get_london_midnight_in_utc(today)
end_date = get_london_midnight_in_utc(today + timedelta(days=1))
subquery = db.session.query(
Notification.notification_type,
@@ -340,7 +343,8 @@ def dao_fetch_todays_stats_for_all_services(include_from_test_key=True, only_act
Notification.service_id,
func.count(Notification.id).label('count')
).filter(
func.date(Notification.created_at) == date.today(),
Notification.created_at >= start_date,
Notification.created_at < end_date
).group_by(
Notification.notification_type,
Notification.status,

View File

@@ -1635,6 +1635,7 @@ def test_get_detailed_services_only_includes_todays_notifications(notify_db, not
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 9, 23, 59))
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 0, 0))
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 12, 0))
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 23, 0))
with freeze_time('2015-10-10T12:00:00'):
data = get_detailed_services(start_date=datetime.utcnow().date(), end_date=datetime.utcnow().date())
@@ -1643,7 +1644,7 @@ def test_get_detailed_services_only_includes_todays_notifications(notify_db, not
assert len(data) == 1
assert data[0]['statistics'] == {
EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0},
SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 2},
SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 3},
LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}
}