from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Boolean
from sqlalchemy.orm import relationship
from src.utils.db import Base
from sqlalchemy.orm import relationship, foreign
from sqlalchemy import and_
from src.marketing.apps.Account.model import ConnectedAccount




class Calendar(Base):
    __tablename__ = "calendar"

    id = Column(Integer, primary_key=True, index=True)
    store_id = Column(Integer)
    branch_id = Column(Integer)
    user_id = Column(Integer)
    icon = Column(String, nullable=True)
    name = Column(String, nullable=False)
    slug = Column(String, index=True, unique=True)
    timezone = Column(String)
    is_deleted = Column(Boolean, default=False)

    posts = relationship("CalendarPost", back_populates="calendar")

    connected_accounts = relationship(
        "ConnectedAccount",
        primaryjoin=and_(
            store_id == foreign(ConnectedAccount.store_id),
            branch_id == foreign(ConnectedAccount.branch_id),
            user_id == foreign(ConnectedAccount.user_id)
        ),
        viewonly=True
    )