from sqlalchemy import String, Text
from sqlalchemy.orm import Mapped, mapped_column, relationship

from app.db.base import Base, TimestampMixin


class Agency(Base, TimestampMixin):
    __tablename__ = "agencies"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(String(255), nullable=False)
    phone: Mapped[str | None] = mapped_column(String(20))
    email: Mapped[str | None] = mapped_column(String(255))
    address: Mapped[str | None] = mapped_column(Text)

    users: Mapped[list["User"]] = relationship(back_populates="agency")
    customers: Mapped[list["Customer"]] = relationship(back_populates="agency")
    policies: Mapped[list["Policy"]] = relationship(back_populates="agency")


from app.models.customer import Customer  # noqa: E402
from app.models.policy import Policy  # noqa: E402
from app.models.user import User  # noqa: E402
