File size: 1,600 Bytes
d0e0a14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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'))