from __future__ import annotations from datetime import datetime import sqlalchemy as sa from audience_common import datetimeutc from sqlalchemy import CheckConstraint from sqlalchemy.orm import Mapped, mapped_column from campaigns.connectors.db.orm import Base from campaigns.utils.uuid import uuid_string class EngagementAudience(Base): __tablename__ = "meta_engagement_audience" __table_args__ = ( CheckConstraint( "facebook_page_external_id IS NOT NULL " "OR instagram_account_external_id IS NOT NULL" ), ) id: Mapped[str] = mapped_column(primary_key=True, default=uuid_string) external_id: Mapped[str] event_ids: Mapped[list[str]] = mapped_column(sa.ARRAY(sa.Text)) facebook_page_external_id: Mapped[str | None] instagram_account_external_id: Mapped[str | None] created_at: Mapped[datetime] = mapped_column(default=datetimeutc.now)