178:class SuppressionEntry(Base, TimestampMixin):
179-    __tablename__ = "suppression_list"
180-    id = Column(Integer, primary_key=True)
181-    email = Column(String(320), unique=True, nullable=False, index=True)
182-    reason = Column(String(50), default="unsubscribed")  # unsubscribed|bounced|complaint|manual
183-    source = Column(String(200), default="")
184-    campaign_id = Column(Integer, ForeignKey("campaigns.id", ondelete="SET NULL"))
185-    user_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"))
186-
187-
188-class SubjectLine(Base, TimestampMixin):
189-    __tablename__ = "subject_lines"
190-    id = Column(Integer, primary_key=True)
191-    user_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
192-    subject = Column(String(500), nullable=False)
---
31:        job = SendJob(campaign_id=campaign.id, campaign_recipient_id=cr.id,
14:async def start_campaign(db: AsyncSession, campaign: Campaign) -> dict:
