from sqlalchemy import Integer, Boolean, ForeignKey
from sqlalchemy.orm import relationship, Mapped, mapped_column
from typing import TYPE_CHECKING
from src.apps.base.models.base import Base

if TYPE_CHECKING:
    from typing import Any


class MerchantUsers(Base):
    """
    MerchantsUsers Model: ORM class for MerchantsUsers Entity
    """

    __tablename__ = "merchant_users"

    id: Mapped[int] = mapped_column(Integer, primary_key=True, index=True, autoincrement=True)
    is_owner: Mapped[bool] = mapped_column(Boolean, default=False)

    user_id: Mapped[int] = mapped_column(Integer, ForeignKey("users.id"), nullable=True)
    user: Mapped["User"] = relationship("User", foreign_keys=[user_id])

    merchant_id: Mapped[int] = mapped_column(Integer, ForeignKey("merchants.id"))
    merchant: Mapped["Merchant"] = relationship("Merchant", foreign_keys=[merchant_id])
