diff --git a/app/dao/daily_sorted_letter_dao.py b/app/dao/daily_sorted_letter_dao.py deleted file mode 100644 index 720eddf38..000000000 --- a/app/dao/daily_sorted_letter_dao.py +++ /dev/null @@ -1,38 +0,0 @@ -from datetime import datetime - -from sqlalchemy.dialects.postgresql import insert - -from app import db -from app.dao.dao_utils import autocommit -from app.models import DailySortedLetter - - -def dao_get_daily_sorted_letter_by_billing_day(billing_day): - return DailySortedLetter.query.filter_by( - billing_day=billing_day - ).first() - - -@autocommit -def dao_create_or_update_daily_sorted_letter(new_daily_sorted_letter): - ''' - This uses the Postgres upsert to avoid race conditions when two threads try and insert - at the same row. The excluded object refers to values that we tried to insert but were - rejected. - http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#insert-on-conflict-upsert - ''' - table = DailySortedLetter.__table__ - stmt = insert(table).values( - billing_day=new_daily_sorted_letter.billing_day, - file_name=new_daily_sorted_letter.file_name, - unsorted_count=new_daily_sorted_letter.unsorted_count, - sorted_count=new_daily_sorted_letter.sorted_count) - stmt = stmt.on_conflict_do_update( - index_elements=[table.c.billing_day, table.c.file_name], - set_={ - 'unsorted_count': stmt.excluded.unsorted_count, - 'sorted_count': stmt.excluded.sorted_count, - 'updated_at': datetime.utcnow() - } - ) - db.session.connection().execute(stmt) diff --git a/tests/app/dao/test_daily_sorted_letter_dao.py b/tests/app/dao/test_daily_sorted_letter_dao.py deleted file mode 100644 index a762fc8bc..000000000 --- a/tests/app/dao/test_daily_sorted_letter_dao.py +++ /dev/null @@ -1,55 +0,0 @@ -from datetime import date - -from app.dao.daily_sorted_letter_dao import ( - dao_create_or_update_daily_sorted_letter, - dao_get_daily_sorted_letter_by_billing_day, -) -from app.models import DailySortedLetter -from tests.app.db import create_daily_sorted_letter - - -def test_dao_get_daily_sorted_letter_by_billing_day(notify_db_session): - billing_day = date(2018, 2, 1) - other_day = date(2017, 9, 8) - - daily_sorted_letters = create_daily_sorted_letter(billing_day=billing_day) - - assert dao_get_daily_sorted_letter_by_billing_day(billing_day) == daily_sorted_letters - assert not dao_get_daily_sorted_letter_by_billing_day(other_day) - - -def test_dao_create_or_update_daily_sorted_letter_creates_a_new_entry(notify_db_session): - billing_day = date(2018, 2, 1) - dsl = DailySortedLetter(billing_day=billing_day, - file_name="Notify-201802011234.rs.txt", - unsorted_count=2, - sorted_count=0) - dao_create_or_update_daily_sorted_letter(dsl) - - daily_sorted_letter = dao_get_daily_sorted_letter_by_billing_day(billing_day) - - assert daily_sorted_letter.billing_day == billing_day - assert daily_sorted_letter.unsorted_count == 2 - assert daily_sorted_letter.sorted_count == 0 - assert not daily_sorted_letter.updated_at - - -def test_dao_create_or_update_daily_sorted_letter_updates_an_existing_entry( - notify_db_session -): - create_daily_sorted_letter(billing_day=date(2018, 1, 18), - file_name="Notify-20180118123.rs.txt", - unsorted_count=2, - sorted_count=3) - - dsl = DailySortedLetter(billing_day=date(2018, 1, 18), - file_name="Notify-20180118123.rs.txt", - unsorted_count=5, - sorted_count=17) - dao_create_or_update_daily_sorted_letter(dsl) - - daily_sorted_letter = dao_get_daily_sorted_letter_by_billing_day(dsl.billing_day) - - assert daily_sorted_letter.unsorted_count == 5 - assert daily_sorted_letter.sorted_count == 17 - assert daily_sorted_letter.updated_at