From e80a002c5888a7be7fa434995d176250aaca7246 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Mon, 9 Dec 2019 12:19:18 +0000 Subject: [PATCH] New table returned-letters The table will contain notification ids for services that have returned letters. This will make it easy to query the data in Notification_history since we can join on the primary key. --- app/dao/returned_letters_dao.py | 0 app/models.py | 14 +++++++-- .../versions/0310_returned_letters_table_.py | 30 +++++++++++++++++++ tests/app/dao/test_returned_letters_dao.py | 0 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 app/dao/returned_letters_dao.py create mode 100644 migrations/versions/0310_returned_letters_table_.py create mode 100644 tests/app/dao/test_returned_letters_dao.py diff --git a/app/dao/returned_letters_dao.py b/app/dao/returned_letters_dao.py new file mode 100644 index 000000000..e69de29bb diff --git a/app/models.py b/app/models.py index 682e8bd83..a7ece9dbf 100644 --- a/app/models.py +++ b/app/models.py @@ -2018,8 +2018,7 @@ class Complaint(db.Model): __tablename__ = 'complaints' id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) - notification_id = db.Column(UUID(as_uuid=True), db.ForeignKey('notification_history.id'), - index=True, nullable=False) + notification_id = db.Column(UUID(as_uuid=True), index=True, nullable=False) service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), unique=False, index=True, nullable=False) service = db.relationship(Service, backref=db.backref('complaints')) ses_feedback_id = db.Column(db.Text, nullable=True) @@ -2071,3 +2070,14 @@ class ServiceDataRetention(db.Model): "created_at": self.created_at.strftime(DATETIME_FORMAT), "updated_at": self.updated_at.strftime(DATETIME_FORMAT) if self.updated_at else None, } + + +class ReturnedLetter(db.Model): + __tablename__ = 'returned_letters' + + id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + reported_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow) + service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), unique=False, index=True, nullable=False) + service = db.relationship(Service, backref=db.backref('returned_letters')) + notification_id = db.Column(UUID(as_uuid=True), unique=True, nullable=False) + diff --git a/migrations/versions/0310_returned_letters_table_.py b/migrations/versions/0310_returned_letters_table_.py new file mode 100644 index 000000000..a33be2595 --- /dev/null +++ b/migrations/versions/0310_returned_letters_table_.py @@ -0,0 +1,30 @@ +""" + +Revision ID: 0310_returned_letters_table +Revises: 0309_add_uq_key_row_number +Create Date: 2019-12-09 12:13:49.432993 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0310_returned_letters_table' +down_revision = '0309_add_uq_key_row_number' + + +def upgrade(): + op.create_table('returned_letters', + sa.Column('id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('reported_at', sa.DateTime(), nullable=False), + sa.Column('service_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('notification_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.ForeignKeyConstraint(['service_id'], ['services.id'], ), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('notification_id') + ) + op.create_index(op.f('ix_returned_letters_service_id'), 'returned_letters', ['service_id'], unique=False) + + +def downgrade(): + op.drop_table('returned_letters') diff --git a/tests/app/dao/test_returned_letters_dao.py b/tests/app/dao/test_returned_letters_dao.py new file mode 100644 index 000000000..e69de29bb