from datetime import datetime from fansifter_common.adapters.encrypter import EncryptedStr from fansifter_common.utils import timezone from fansifter_common.utils.uuid import uuid_string from sqlalchemy.orm import Mapped, mapped_column from ows_text_campaigns.adapters.db import Model, PgModel from ows_text_campaigns.campaigns.enums import MessageChannel class TwilioMessagePricingByCountry(Model, kw_only=True): __tablename__ = "twilio_message_pricing_by_country" id: Mapped[str] = mapped_column(primary_key=True, default_factory=uuid_string) country_iso2: Mapped[str] message_type: Mapped[MessageChannel] currency: Mapped[str] min_current_price: Mapped[float] max_current_price: Mapped[float] created_at: Mapped[datetime] class TwilioAccount(PgModel, kw_only=True): __tablename__ = "twilio_account" account_sid: Mapped[str] = mapped_column(primary_key=True) auth_token: Mapped[EncryptedStr] api_key_id: Mapped[str] api_secret: Mapped[EncryptedStr] created_at: Mapped[datetime] = mapped_column(default_factory=timezone.now) updated_at: Mapped[datetime] = mapped_column( default_factory=timezone.now, onupdate=timezone.now )