tech-pm-4vuyq1/models/biblequiz.py

42 lines
1.7 KiB
Python

from sqlalchemy import Column, String, Boolean, DateTime, ForeignKey, Text
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from core.database import Base
import uuid
class BibleQuiz(Base):
__tablename__ = "bible_quizzes"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name = Column(String, nullable=False)
description = Column(Text, nullable=True)
is_active = Column(Boolean, default=True)
created_at = Column(DateTime, default=func.now())
updated_at = Column(DateTime, default=func.now(), onupdate=func.now())
questions = relationship("BibleQuizQuestion", back_populates="quiz")
class BibleQuizQuestion(Base):
__tablename__ = "bible_quiz_questions"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
question_text = Column(Text, nullable=False)
quiz_id = Column(UUID, ForeignKey("bible_quizzes.id"), nullable=False)
created_at = Column(DateTime, default=func.now())
updated_at = Column(DateTime, default=func.now(), onupdate=func.now())
quiz = relationship("BibleQuiz", back_populates="questions")
answers = relationship("BibleQuizAnswer", back_populates="question")
class BibleQuizAnswer(Base):
__tablename__ = "bible_quiz_answers"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
answer_text = Column(Text, nullable=False)
is_correct = Column(Boolean, default=False)
question_id = Column(UUID, ForeignKey("bible_quiz_questions.id"), nullable=False)
created_at = Column(DateTime, default=func.now())
updated_at = Column(DateTime, default=func.now(), onupdate=func.now())
question = relationship("BibleQuizQuestion", back_populates="answers")