44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from sqlalchemy import Column, BigInteger, String, Text, Integer, ForeignKey
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from models.base import AuditBase
|
|
|
|
|
|
class LibraryFile(AuditBase):
|
|
subject = Column(String(45), nullable=False)
|
|
module = Column(String(45), nullable=False)
|
|
name = Column(String(45), nullable=False)
|
|
type = Column(String(45), nullable=False)
|
|
size = Column(Integer, nullable=False)
|
|
content = Column(Text, nullable=False)
|
|
|
|
practice_record = relationship(
|
|
"PracticeRecord",
|
|
back_populates="library_file",
|
|
cascade="all, delete-orphan"
|
|
)
|
|
|
|
|
|
class PracticeRecord(AuditBase):
|
|
library_file_id = Column(BigInteger, ForeignKey("library_file.id"), nullable=False)
|
|
|
|
total_count = Column(Integer, nullable=False)
|
|
correct_count = Column(Integer, nullable=False)
|
|
wrong_count = Column(Integer, nullable=False)
|
|
|
|
library_file = relationship(
|
|
"LibraryFile",
|
|
back_populates="practice_record",
|
|
)
|
|
|
|
|
|
class Mistake(AuditBase):
|
|
subject = Column(String(45), nullable=False)
|
|
module = Column(String(45), nullable=False)
|
|
name = Column(String(45), nullable=False)
|
|
type = Column(String(45), nullable=False)
|
|
question = Column(Text, nullable=False)
|
|
options = Column(JSONB, nullable=False)
|
|
answer = Column(JSONB, nullable=False)
|