from sqlalchemy import Column, String, Integer, LargeBinary, Text, VARCHAR, ForeignKey from sqlalchemy.orm import relationship from project.config import settings from project.database import Base class Folder(Base): __tablename__ = 'folders' id = Column(Integer, primary_key=True, index=True, autoincrement=True) name = Column(VARCHAR(128)) user_id = Column(Integer, ForeignKey('users.id')) owner = relationship('User', back_populates='folders') audio_records = relationship('AudioRecord', back_populates='folder') images = relationship('ImageRecord', back_populates='folder') class AudioRecord(Base): __tablename__ = 'audio_records' id = Column(Integer, primary_key=True, index=True, autoincrement=True) audio_path = Column(VARCHAR(512)) transcription = Column(Text) folder_id = Column(Integer, ForeignKey('folders.id')) folder = relationship('Folder', back_populates='audio_records') class ImageRecord(Base): __tablename__ = 'image_records' id = Column(Integer, primary_key=True, index=True, autoincrement=True) image_path = Column(VARCHAR(512), default=str(settings.BASE_DIR / 'images' / 'base_img.jpg')) transcription = Column(Text) folder_id = Column(Integer, ForeignKey('folders.id')) folder = relationship('Folder', back_populates='images') class Report(Base): __tablename__ = 'reports' id = Column(Integer, primary_key=True, index=True, autoincrement=True) content = Column(Text) user = relationship('User', back_populates='reports') user_id = Column(Integer, ForeignKey('users.id'))