Simplify the code in the query.

The date in the notifications table should always be the most recent date for the template.
Removed the template_type param for the query as well.
Simplified the tests.
This commit is contained in:
Rebecca Law
2020-02-05 16:43:17 +00:00
parent 3a32c35dd2
commit dec42b06cc
4 changed files with 23 additions and 54 deletions

View File

@@ -72,7 +72,18 @@ def dao_get_last_template_usage(template_id, template_type, service_id):
@statsd(namespace="dao")
def dao_get_last_date_template_was_used(template_id, template_type, service_id):
def dao_get_last_date_template_was_used(template_id, service_id):
last_date_from_notifications = db.session.query(
functions.max(Notification.created_at)
).filter(
Notification.service_id == service_id,
Notification.template_id == template_id,
Notification.key_type != KEY_TYPE_TEST
).scalar()
if last_date_from_notifications:
return last_date_from_notifications
last_date = db.session.query(
functions.max(FactNotificationStatus.bst_date)
).filter(
@@ -80,26 +91,7 @@ def dao_get_last_date_template_was_used(template_id, template_type, service_id):
FactNotificationStatus.key_type != KEY_TYPE_TEST
).scalar()
last_date_from_notifications = db.session.query(
functions.max(Notification.created_at)
).filter(
Notification.service_id == service_id,
Notification.notification_type == template_type,
Notification.template_id == template_id,
Notification.key_type != KEY_TYPE_TEST
).scalar()
if last_date and last_date_from_notifications:
if datetime.combine(last_date, datetime.utcnow().min.time()) >= last_date_from_notifications:
return last_date
else:
return last_date_from_notifications
elif not last_date:
return last_date_from_notifications
elif not last_date_from_notifications:
return last_date
else:
return None
return last_date
@statsd(namespace="dao")

View File

@@ -58,10 +58,10 @@ def get_template_statistics_for_template_id(service_id, template_id):
@template_statistics.route('/last-used/<uuid:template_id>')
def get_last_used_datetime_for_template(service_id, template_id):
template = dao_get_template_by_id_and_service_id(template_id, service_id)
# Check the template and service exist
dao_get_template_by_id_and_service_id(template_id, service_id)
last_date_used = dao_get_last_date_template_was_used(template_id=template_id,
template_type=template.template_type,
service_id=service_id)
return jsonify(last_date_used=last_date_used.strftime(DATETIME_FORMAT))