from sqlalchemy import Column, Integer, JSON, String, DateTime from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.database import Base class Member(Base): __tablename__ = "members" bioguide_id = Column(String, primary_key=True) name = Column(String, nullable=False) first_name = Column(String) last_name = Column(String) party = Column(String(50)) state = Column(String(50)) chamber = Column(String(50)) district = Column(String(50)) photo_url = Column(String) official_url = Column(String) congress_url = Column(String) birth_year = Column(String(10)) address = Column(String) phone = Column(String(50)) terms_json = Column(JSON) leadership_json = Column(JSON) sponsored_count = Column(Integer) cosponsored_count = Column(Integer) detail_fetched = Column(DateTime(timezone=True)) created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) bills = relationship("Bill", back_populates="sponsor", foreign_keys="Bill.sponsor_id") trend_scores = relationship( "MemberTrendScore", back_populates="member", order_by="desc(MemberTrendScore.score_date)", cascade="all, delete-orphan" ) news_articles = relationship( "MemberNewsArticle", back_populates="member", order_by="desc(MemberNewsArticle.published_at)", cascade="all, delete-orphan" )