diff --git a/app/models.py b/app/models.py index 1d5ea5174..0b2d45b64 100644 --- a/app/models.py +++ b/app/models.py @@ -2472,3 +2472,22 @@ class BroadcastProviderMessage(db.Model): updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow) UniqueConstraint(broadcast_event_id, provider) + + +class ServiceBroadcastProviderRestriction(db.Model): + """ + Most services don't send broadcasts. Of those that do, most send to all broadcast providers. + However, some services don't send to all providers. These services are test services that we or the providers + themselves use. + + This table links those services. There should only be one row per service in this table, and this is enforced by + the service_id being a primary key. + """ + __tablename__ = "service_broadcast_provider_restriction" + + service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), primary_key=True, nullable=False) + service = db.relationship(Service, backref=db.backref("allowed_broadcast_provider", uselist=False)) + + provider = db.Column(db.String, nullable=False) + + created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow) diff --git a/migrations/versions/0333_service_broadcast_provider.py b/migrations/versions/0333_service_broadcast_provider.py new file mode 100644 index 000000000..3c8d3fa94 --- /dev/null +++ b/migrations/versions/0333_service_broadcast_provider.py @@ -0,0 +1,28 @@ +""" + +Revision ID: 0333_service_broadcast_provider +Revises: 0332_broadcast_provider_msg +Create Date: 2020-12-01 17:03:18.209780 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0333_service_broadcast_provider' +down_revision = '0332_broadcast_provider_msg' + + +def upgrade(): + op.create_table( + 'service_broadcast_provider_restriction', + sa.Column('service_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('provider', sa.String(), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=False), + sa.ForeignKeyConstraint(['service_id'], ['services.id'], ), + sa.PrimaryKeyConstraint('service_id') + ) + + +def downgrade(): + op.drop_table('service_broadcast_provider_restriction')