"""邮件模板模型"""
from sqlalchemy import BigInteger, ForeignKey, String, Text, Integer, UniqueConstraint
from sqlalchemy.orm import Mapped, mapped_column

from app.core.models.base import Base, TimestampMixin


class EmailTemplate(Base, TimestampMixin):
    __tablename__ = "email_templates"
    __table_args__ = (
        UniqueConstraint("tenant_id", "template_key", "language", name="uk_email_template"),
        {
            "mysql_engine": "InnoDB",
            "mysql_charset": "utf8mb4",
            "mysql_collate": "utf8mb4_unicode_ci",
        },
    )

    id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
    tenant_id: Mapped[int] = mapped_column(
        BigInteger, ForeignKey("tenants.id", ondelete="CASCADE"), nullable=False,
    )
    template_key: Mapped[str] = mapped_column(
        String(50), nullable=False,
        comment="welcome | password_changed | order_created | order_status_changed",
    )
    language: Mapped[str] = mapped_column(
        String(10), nullable=False, default="zh", server_default="zh",
        comment="zh | en",
    )
    subject: Mapped[str] = mapped_column(String(500), nullable=False)
    body: Mapped[str] = mapped_column(Text, nullable=False)
    is_enabled: Mapped[int] = mapped_column(Integer, nullable=False, default=1)
    notify_list_enabled: Mapped[int] = mapped_column(
        Integer, nullable=False, default=0, server_default="0",
        comment="是否抄送到额外列表 0=否 1=是",
    )
    attach_invoice: Mapped[int] = mapped_column(
        Integer, nullable=False, default=0, server_default="0",
        comment="是否附加发票PDF 0=否 1=是（仅 order_created / order_status_changed 生效）",
    )
