mirror of
https://github.com/GSA/notifications-api.git
synced 2026-09-09 15:49:49 -04:00
remove daily_sorted_letter_dao
This commit is contained in:
@@ -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)
|
|
||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user