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: