from sqlalchemy import Column, DateTime, ForeignKey, Text from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.sql import func from sqlalchemy.orm import relationship from .simple_base import Base import uuid class Response(Base): __tablename__ = "responses" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) poll_id = Column(UUID(as_uuid=True), ForeignKey("polls.id"), nullable=False) user_id = Column(UUID(as_uuid=True), nullable=True) submitted_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False) answers = relationship("Answer", backref="response", cascade="all, delete-orphan", passive_deletes=True) class Answer(Base): __tablename__ = "answers" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) response_id = Column(UUID(as_uuid=True), ForeignKey("responses.id", ondelete="CASCADE"), nullable=False) question_id = Column(UUID(as_uuid=True), ForeignKey("questions.id"), nullable=False) choice_id = Column(UUID(as_uuid=True), nullable=True) text = Column(Text, nullable=True) __all__ = ["Base", "Response", "Answer"]