from sqlalchemy import Column, Integer, String, DateTime, Table, ForeignKey from sqlalchemy.orm import relationship from sqlalchemy.sql import func from database import Base # Many-to-many: one manager can access multiple sites, one site can have multiple managers manager_site_access = Table( "manager_site_access", Base.metadata, Column("manager_id", Integer, ForeignKey("manager_accounts.id"), primary_key=True), Column("site_id", Integer, ForeignKey("sites.id"), primary_key=True), ) class ManagerAccount(Base): __tablename__ = "manager_accounts" id = Column(Integer, primary_key=True, index=True) email = Column(String, unique=True, nullable=False, index=True) password_hash = Column(String, nullable=False) full_name = Column(String, nullable=True) is_active = Column(Integer, default=1, nullable=False) created_at = Column(DateTime(timezone=True), server_default=func.now()) sites = relationship("Site", secondary=manager_site_access, backref="manager_accounts")