|
|
|
|
@@ -108,7 +108,7 @@ class Campaign(Base, TimestampMixin):
|
|
|
|
|
__table_args__ = (UniqueConstraint("tenant_id", "external_id", name="uq_campaigns_tenant_external_id"),)
|
|
|
|
|
|
|
|
|
|
id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(ForeignKey("tenancy_tenants.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(String(36), nullable=False, index=True)
|
|
|
|
|
created_by_user_id: Mapped[str | None] = mapped_column(ForeignKey("access_users.id", ondelete="SET NULL"), nullable=True, index=True)
|
|
|
|
|
owner_user_id: Mapped[str | None] = mapped_column(ForeignKey("access_users.id", ondelete="SET NULL"), nullable=True, index=True)
|
|
|
|
|
owner_group_id: Mapped[str | None] = mapped_column(ForeignKey("access_groups.id", ondelete="SET NULL"), nullable=True, index=True)
|
|
|
|
|
@@ -120,7 +120,6 @@ class Campaign(Base, TimestampMixin):
|
|
|
|
|
settings: Mapped[dict[str, Any]] = mapped_column(JSON, default=dict, nullable=False)
|
|
|
|
|
mail_profile_policy: Mapped[dict[str, Any]] = mapped_column(JSON, default=dict, nullable=False)
|
|
|
|
|
|
|
|
|
|
tenant: Mapped["Tenant"] = relationship("Tenant")
|
|
|
|
|
versions: Mapped[list[CampaignVersion]] = relationship(back_populates="campaign", cascade="all, delete-orphan")
|
|
|
|
|
jobs: Mapped[list[CampaignJob]] = relationship(back_populates="campaign", cascade="all, delete-orphan")
|
|
|
|
|
|
|
|
|
|
@@ -130,7 +129,7 @@ class CampaignShare(Base, TimestampMixin):
|
|
|
|
|
__table_args__ = (UniqueConstraint("campaign_id", "target_type", "target_id", name="uq_campaign_share_target"),)
|
|
|
|
|
|
|
|
|
|
id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(ForeignKey("tenancy_tenants.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(String(36), nullable=False, index=True)
|
|
|
|
|
campaign_id: Mapped[str] = mapped_column(ForeignKey("campaigns.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
target_type: Mapped[str] = mapped_column(String(20), nullable=False, index=True)
|
|
|
|
|
target_id: Mapped[str] = mapped_column(String(36), nullable=False, index=True)
|
|
|
|
|
@@ -148,7 +147,7 @@ class RecipientImportMappingProfile(Base, TimestampMixin):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(ForeignKey("tenancy_tenants.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(String(36), nullable=False, index=True)
|
|
|
|
|
owner_user_id: Mapped[str] = mapped_column(ForeignKey("access_users.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
|
|
|
|
column_count: Mapped[int] = mapped_column(Integer, nullable=False)
|
|
|
|
|
@@ -162,7 +161,6 @@ class RecipientImportMappingProfile(Base, TimestampMixin):
|
|
|
|
|
value_separators: Mapped[str] = mapped_column(String(50), default=",;|", nullable=False)
|
|
|
|
|
mappings: Mapped[list[dict[str, Any]]] = mapped_column(JSON, default=list, nullable=False)
|
|
|
|
|
|
|
|
|
|
tenant: Mapped["Tenant"] = relationship("Tenant")
|
|
|
|
|
owner: Mapped["User"] = relationship("User")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -223,7 +221,7 @@ class CampaignJob(Base, TimestampMixin):
|
|
|
|
|
__table_args__ = (UniqueConstraint("campaign_version_id", "entry_index", name="uq_campaign_jobs_version_entry"),)
|
|
|
|
|
|
|
|
|
|
id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(ForeignKey("tenancy_tenants.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(String(36), nullable=False, index=True)
|
|
|
|
|
campaign_id: Mapped[str] = mapped_column(ForeignKey("campaigns.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
campaign_version_id: Mapped[str] = mapped_column(ForeignKey("campaign_versions.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
entry_index: Mapped[int] = mapped_column(Integer, nullable=False)
|
|
|
|
|
@@ -263,7 +261,7 @@ class CampaignIssue(Base, TimestampMixin):
|
|
|
|
|
__tablename__ = "campaign_issues"
|
|
|
|
|
|
|
|
|
|
id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(ForeignKey("tenancy_tenants.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(String(36), nullable=False, index=True)
|
|
|
|
|
campaign_id: Mapped[str] = mapped_column(ForeignKey("campaigns.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
campaign_version_id: Mapped[str | None] = mapped_column(ForeignKey("campaign_versions.id", ondelete="CASCADE"), nullable=True, index=True)
|
|
|
|
|
job_id: Mapped[str | None] = mapped_column(ForeignKey("campaign_jobs.id", ondelete="CASCADE"), nullable=True, index=True)
|
|
|
|
|
@@ -279,7 +277,7 @@ class AttachmentBlob(Base, TimestampMixin):
|
|
|
|
|
__table_args__ = (UniqueConstraint("tenant_id", "sha256", name="uq_attachment_blobs_tenant_sha256"),)
|
|
|
|
|
|
|
|
|
|
id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(ForeignKey("tenancy_tenants.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(String(36), nullable=False, index=True)
|
|
|
|
|
sha256: Mapped[str] = mapped_column(String(64), nullable=False, index=True)
|
|
|
|
|
size_bytes: Mapped[int] = mapped_column(Integer, nullable=False)
|
|
|
|
|
mime_type: Mapped[str | None] = mapped_column(String(255))
|
|
|
|
|
@@ -291,7 +289,7 @@ class AttachmentInstance(Base, TimestampMixin):
|
|
|
|
|
__tablename__ = "attachment_instances"
|
|
|
|
|
|
|
|
|
|
id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(ForeignKey("tenancy_tenants.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
tenant_id: Mapped[str] = mapped_column(String(36), nullable=False, index=True)
|
|
|
|
|
owner_user_id: Mapped[str | None] = mapped_column(ForeignKey("access_users.id", ondelete="SET NULL"), nullable=True, index=True)
|
|
|
|
|
campaign_id: Mapped[str | None] = mapped_column(ForeignKey("campaigns.id", ondelete="CASCADE"), nullable=True, index=True)
|
|
|
|
|
blob_id: Mapped[str] = mapped_column(ForeignKey("attachment_blobs.id", ondelete="CASCADE"), nullable=False, index=True)
|
|
|
|
|
|